モジュールパターンの明らかにプライベート変数を公開する
-
12-12-2019 - |
質問
明らかにモジュールパターンを実装しようとしていますが、変更されたプライベートプロパティを公開できません。
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".
. 解決
return {
fullName: name,
set: setName
};
.
name
とsetName
の値を使用します。変数への参照は作成されません。効果的に、name
がコピーされます。
変数への参照を保つことができるようにクロージャを利用するために、対応するgetName
メソッドを作成する必要があります。
他のヒント
var myRevealingModule = (function(){
var name = 'Diogo';
function setName () {
name = name + ' Cardoso';
};
function getName () {
return name;
};
return {
fullName: name,
set: setName,
get: getName
};
}());
.
オブジェクトまたは配列内の値が属性である場合は、オブジェクトまたは配列をエクスポートしてエクスポートすることで、外部のユーザーが更新された変更を見ることができます。エクスポート変数の一般的なパターンには、スカラ/オブジェクトコピー/リファレンスの二分法があります。
所属していません StackOverflow