schwobeseggl.de ein Neigschmecktr in Baden

1Dez/08Off

public, private und “privileged” in Javascript

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"
  1. Javascript-Klassen und Objekte
  2. Javascript: getter und setter
  3. Vererbung in Javascript anhand von Exceptions
  4. Registry Pattern in Javascript
  5. Javascript aus FF-Erweiterung in der Webseite benutzen