Im Folgenden bezeichne n die Zahl der Instanzen von Klasse.
--- Variante 1 ---
function Klasse() {
this.methode = function() {};
}
Laufzeitverhalten =
n * (Erzeugung Funktionsobjekt + Zuweisung an Instanz-Eigenschaft)
Speicherverbrauch =
n * (Funktionsobjekt + Referenz in Instanz + Closure)
Variante 1 erlaubt den Zugriff auf in Klasse lokale Variablen. Dazu muss eine Closure erzeugt und im Speicher gehalten werden. Erfolgt kein Zugriff auf lokale Variablen, sollte diese vom Garbage Collector entsorgt werden.
--- Variante 2 ---
function methode() {}
function Klasse() {
this.methode = methode;
}
Laufzeit:
(Erzeugung Funktionsobjekt + Zuweisung an globale Eigenschaft)
- n * (Zuweisung an Instanz-Eigenschaft)
Speicherverbrauch:
(Funktionsobjekt + Referenz in window)
- n * (Referenz in Instanz)
--- Variante 3 ---
function Klasse() {}
Klasse.prototype.methode = function() {};
Laufzeit:
(Erzeugung von Funktionsobjekt + Zuweisung an Prototyp-Eigenschaft)
- (Zahl der Methodenaufrufe) * (Namensauflösung im Prototyp)
Speicherverbrauch:
(Funktionsobjekt + Referenz im Prototyp)
Es wäre vielleicht wirklich interessant, sich in den Quelltext von SpiderMonkey einzulesen, um einschätzen zu können, was (zumindest im Firefox) 'unter der Haube' abläuft...
Christoph