Private Variablen im aufdeckenden Modulmuster verfügbar machen
-
12-12-2019 - |
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".
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
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.