mrjerk: Private/Public/Privileged Methoden & Speichernutzung

Beitrag lesen

Hallo zusammen,
Ich bin vor kurzem auf eine (zugegeben eher theoretische) Frage gestossen, und ich hoffe, der eine oder andere JS-Freak weiss hier eine Antwort.

Wenn ich eine "JavaScript-Klasse" (ja ich weiss, im strengen Sinne gibt es das in JS nicht) implementieren möchte, und eine Public-Methode dazu, mache ich das für gewöhnlich so:

  
  
function MeineKlasse() {  
...  
}  
MeineKlasse.prototype.publicMethode = function () {...}  
var meineInstanz = new MeineKlasse();  
usw.  

Eine "Private-Methode" baue ich mit Closures:

  
function MeineKlasse() {  
   var privateMethode = function () {...}  
}  

Soweit so gut. Was mache ich aber, wenn meine Private-Methode von einer Public-Methode aufgerufen werden soll? Dann geht das nach meinem Dafürhalten nur so:

  
function MeineKlasse () {  
   var privateMethode = function () {...}  
   this.publicMethode = function () {privateMethode();}  
}  

Auf dieser Seite wird dieses Konzept "priviligierte Methode" gennant.

Meine Fragen sind nun:
1.) Habe ich bei diesem Konzept nicht das Problem, dass bei jeder Instanz von MeineKlasse() ein neues Funktionsobjekt für die publicMethode angelegt wird? Ich habe mal vor Urzeiten in einer ActionScript-Doku gelesen, dass das so ist, und dass man deshalb Methoden wenn irgend möglich über das Prototyp-Attribut definieren soll, weil dann immer die gleiche Methode referenziert wird (was im o.g. Fall aber ja nicht geht) - ich weiss aber nicht ob das in JavaScript auch (noch) so ist.

2.) Wenn das tatsächlich so ist (dass jede Instanz das Funktionsobjekt neu erzeugt), verschwende ich bei vielen Instanzen ja ganz schön Speicher - wie entkomme ich diesem Dilemma?

Viele Grüße & Danke für Antworten,

Jörg