Du verwechselst wieder etwas. Es geht nicht um die Geschwindigkeit von closures. In meinem Beispiel, hat das closure nur eine untergeordnete Rolle und so gut wie kein Performance Nachteil. Allerdings ist dieser Weg eher selten.
Den Nachteil hast du erst, wenn du im Konstruktor mit this.func = function() {} eine Funktion der Instanz hinzufügst.
Nein, kapiere ich wirklich nicht. Mit dem "module pattern" brauche ich this zwar nicht, aber vielleicht kannst Du ja noch irgendwas verlinken, wo erklärt wird, wo der Performanceverlust durch "this" erzeugt wird, unabhängig vom Closure. Denn this.member hat ja nix mir dem Thema "privat" zu tun. "privat" aber wieder geht ohne Closure nicht. Insofern zwei Paar Schuhe, würde ich meinen.
Natürlich, jede Variabel in einer Funktion ist privat bzw. lokal, das closure ist nur eine zusätzliche Ebene.
Es geht um diesen Unterschied:
function MyClass() {
this._private;
}
MyClass.prototype.func = function() {return this._private;};
MyClass.prototype.tu_was = function(p) {this._private = p * p;};
var x = new MyClass();
function MyClass() {
var private;
this.func = function() {return private;};
this.tu_was = function(p) {private = p * p;};
}
var x = new MyClass();
Das erste ist je nach Browser 2-4 Mal schneller, man möchte aber das zweite, wenn es um konsequente Umsetzung der Kapselung geht.
Struppi.