Frage

Ich versuche, das aufschlussreiche Modulmuster zu implementieren, kann jedoch keine geänderte private Eigenschaft verfügbar machen.

var myRevealingModule = (function(){

    var name = 'Diogo';

    function setName () {
       name = name + ' Cardoso';
    }

    return {
        fullName: name,
        set: setName
    };

}());

// Sample usage:
myRevealingModule.set();
console.log(myRevealingModule.fullName); // "Diogo" instead of the excepted "Diogo Cardoso".
War es hilfreich?

Lösung

return {
    fullName: name,
    set: setName
};

Das nutzt die Wertvorstellungen von name und setName.Es wird kein Verweis auf die Variable erstellt.Effektiv, name kopiert wird.

Sie müssen eine entsprechende erstellen getName methode, um Schließungen zu nutzen, damit Sie einen Verweis auf eine Variable behalten können.

Andere Tipps

generasacodicetagpre.

http://jsfiddle.net/yexmx/

Wenn Ihr Wert ein Attribut in einem Objekt oder einem Array ist, können Sie das Objekt oder das Array exportieren, und der Export wird mit Bezug auf Referenz, sodass externe Benutzer aktualisierte Änderungen sehen.Es ist ein wenig riskant, da das generische Muster der exportierenden Variablen die Skalar- / Objektkopie / Referenzdichotomie hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top