Jetzt wirds hässlich. Natürlich gibts „public“ und „private“ auch in Javascript. Allerdings, wie immer, ein bisschen anders:
Public
function Constructor(value) {
this.membername = value;
}
Constructor.prototype.membername = value;
myConst = new Constructor("foobar");
print myConst.membername; // prints 'foobar'
Private
function Constructor(value) {
var self = this;
this.membername1 = value; // public member
var membername2 = value + "private"; // private member
function membername() { // private method
print self.member; //access to public member in private method
print membername2; // access to private member in private method
}
}
myConst = new Constructor("foobar");
print myConst.membername1; // prints 'foobar'
print myConst.membername2; // prints 'undefined'
myConst.membername(); //no such function
Wenn man jetzt aber z.B. mittels dem property „prototype“ auf private-members zugreifen will, dann wird man scheitern. „public“ hat keinen Zugriff auf „private“. Dazu muss man die „privileged“-Methoden verwenden.
Privileged
function Constructor(value) {
this.membername = function membername() {
print "hi";
};
}
myConst = new Constructor("foobar");
myConst.membername(); // prints "hi"