Reinhard: Private Klassen-Eigenschaften

Beitrag lesen

Hey,

ich arbeite an einem kleinen Tool und mir wird gerade klar, wie doof das ist, dass es in JS keine richtige Privatisierung gibt. Folgendes Beispiel:

(function() {
    var myClass = function(msg) {
        this.msg = msg;
    };
    myClass.prototype.alert = function() {
        window.alert(reverse1(this));
        window.alert(reverse2.call(this));
    };
    
    var reverse1 = function(myC) {
        return myC.msg.split('').reverse().join('');
    };
    var reverse2 = function() {
        return this.msg.split('').reverse().join('');
    };
    
    var m = new myClass('hello world');
    m.alert();
})();

Sehe ich das richtig, dass eine „Privatisierung“ der Methode reverse nur durch die oben gezeigten Varianten zu erreichen ist? Wenn Ja, welche ist zu bevorzugen? Wenn Nein, wie geht es besser?

Reinhard