Exposer les variables privées dans Révéler le modèle de module
-
12-12-2019 - |
Question
J'essaie d'implémenter le modèle de module révélateur mais je ne parviens pas à exposer une propriété privée modifiée.
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".
La solution
return {
fullName: name,
set: setName
};
Cela utilise le valeurs de name
et setName
.Cela ne crée pas de référence à la variable.Effectivement, name
est copié.
Vous devez créer un correspondant getName
méthode, pour profiter des fermetures afin de pouvoir conserver une référence à une variable.
Autres conseils
var myRevealingModule = (function(){
var name = 'Diogo';
function setName () {
name = name + ' Cardoso';
};
function getName () {
return name;
};
return {
fullName: name,
set: setName,
get: getName
};
}());
Si votre valeur est un attribut d'un objet ou d'une matrice, vous pouvez exporter l'objet ou la matrice et l'exportation sera en référence afin que les utilisateurs extérieurs auront des modifications mises à jour.C'est un peu risqué car le modèle générique des variables exportatrices a la dichotomie de copier / de référence scalaire / objet.