Hallo,
Das geht nicht:
function MyClass(){
var private;
}MyClass.prototype.myFunction = function() {
alert(private);
};
>
> Aber das geht:
>
> ~~~javascript
function MyClass(){
> var private;
> }
>
> MyClass.prototype.myFunction = function() {
> alert(this.private);
> };
>
Das "geht" nicht, würde ich meinen. Denn this.private ist "undefined".
function myClass () {
var myPrivate = "privaterWert";
this.showThisPrivate = function () {
alert(myPrivate);
}
}
myClass.prototype.showPrototypePrivate = function () {
alert(this.myPrivate);
}
myInstance = new myClass();
myInstance.showPrototypePrivate(); //undefined , weil this.myPrivate nicht existiert
myInstance.showThisPrivate(); //"privaterWert" weil die Funktion wegen closure zugreifen kann
alert(myInstance.myPrivate); //undefined weil, wie Beispiel 1, this.myPrivat nicht existiert
Struppi nennt das zwar "lokale" variable, da sie aber für alle Klassenfunktionen zugänglich ist, nennen andere sie "private" Variablen. Weil sich eben nur über Klassenfunktionen (getter und setter), nicht aber über Prototype zugreifen lässt.
Gruß
jobo