KurtZ: Objektnotation: this oder prototype?

Beitrag lesen

Kurtz gegrüßt

Bei meinen ca 2000 Nodes kann ich keinen Unterschied messen.

trotzdem würde ich die Methoden ins prototype legen, sicher ist sicher. Auf meiner alten Maschine hat exessives JS diverser Flugbörsen letztens schon swapping-Orgien mit Abstürzen verursacht. Auch die Prototype-Methoden kannst du bei Bedarf in ein Closure packen. Und wer weiß wieviele Nodes es einmal zukünftig sind.

Beim Zugriff über Prototype ersparst du dir Speicheraufwand für minimal mehr Zeitaufwand.

Gibt es ein Tool, das misst, wie viel Speicher ein JavaScript-Objekt aktuell belegt?

Mir nicht bekannt, aber du kannst den Speicherverbrauch deines Browsers vorher/nachher messen. Aber sowas müsstest du konsequenterweise für alle Browser durchproben.

Was du auf jeden Fall klären kannst ist, ob Functions die im Konstructor zugewiesen werden jedesmal neu *angelegt* werden. Prüf doch einfach ob

obj1.methode1===obj2.methode1

a) Falls true, dann haben deine 2000 Nodes nur jeweils 2 zusätzliche Referenzen auf die gleichen 2 Methoden. Also  ca zwischen 16-256 KB overhead für Namensraumeintrag und Referenzen.

b) Falls false, dann wäre der Aufwand nochmal deutlich höher, weil 2*2000 komplette identische Methoden abgelegt werden müssten. Dann könntest du aber IMHO durch Codeumstellung Fall b) herbeiführen. (ungetestet, zumindest in Perl gäbs den erwünschten Effekt)

  
function constructor () {  
  
  function methode () {  
  /* code */  
  }  
  
  this.meth_name=methode;  
}  

Grüße
 Kurt