Hallo,
am ende liegt Struppi so nahe an einem klassen-emulierenden
ergebnis wie in JavaScript eben moeglich.
Findest du? Ich sehe in seinem Code
[code lang=javascript]var MyClass = (function() {
var private;
function Proto(){}
Proto.prototype.func = function() {return private;};
Proto.prototype.tu_was = function(p) {private = p * p;};
return Proto;
})();
nur eine eine Closure-Variable, auf die unnötigerweise vom Prototyp aus zugegriffen wird. Viel einfacher ist bei gleicher Leistung doch das übliche
[code lang=javascript]var MyClass = function() {
var private;
this.func = function() {return private;};
this.tu_was = function(p) {private = p * p;};
};
Natürlich kann man auch hier nicht durch nachträgliche Erweiterung (außerhalb des Konstruktors) auf p zugreifen. Beim Erzeugen einer Instanz muss trotzdem immer eine neue Funktion "Proto" angelegt werden.
In der Tat hat man somit eine private Klassenvariable. So notiert man das nunmal in JS. Wie heißt es doch so schön: Wenn etwas aussieht wie eine Ente, schwimmt, quakt und watschelt wie eine Ente, dann *ist* es eine Ente. Also warum von Simulation sprechen?
Gruß, Don P