Javascript: getter und setter

Nix spektakuläres, bin ich gerade rübergestolpert. Nachdem ich mich ja schon über Sichtbarkeit ausgelassen habe, kommt jetzt der Trick wie man getter und setter definiert.

Bisher hab ich das immer so gemacht:

function Field(val){
    /** @private */
    var value = val;

    /** @public*/
    this.getValue = function(){
        return value;
    };

    /** @public*/
    this.setValue = function(val){
        value = val;
    };
}

Ist auch wunderbar, allerdings bissle lästig das immer zu schreiben. Deshalb hier das ganze im „Mozilla Style“:

function Field(val){
    var value = val;

    this.__defineGetter__("value", function(){
        return value;
    });

    this.__defineSetter__("value", function(val){
        value = val;
    });
}

Potthässlich in der Tat, aber macht genau dasselbe wie der Code drüber. Wenn man jetzt ignoriert das „value“ umbedingt private sein muss, dann sieht das sogar „schön“ aus:

function Field(val){
    this.value = val;
}

Field.prototype = {
    get value(){
        return this._value;
    },
    set value(val){
        this._value = val;
    }
};

Bringt mir jetzt nicht so besonders viel, aber vielleicht brauchts ja jemand anders.

Links: