質問

明らかにモジュールパターンを実装しようとしていますが、変更されたプライベートプロパティを公開できません。

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
};
.

namesetNameを使用します。変数への参照は作成されません。効果的に、nameがコピーされます。

変数への参照を保つことができるようにクロージャを利用するために、対応するgetNameメソッドを作成する必要があります。

他のヒント

var myRevealingModule = (function(){

    var name = 'Diogo';

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

    function getName () {
       return name;
    };

    return {
        fullName: name,
        set: setName,
        get: getName
    };

}());
.

http://jsfiddle.net/yexmx/

オブジェクトまたは配列内の値が属性である場合は、オブジェクトまたは配列をエクスポートしてエクスポートすることで、外部のユーザーが更新された変更を見ることができます。エクスポート変数の一般的なパターンには、スカラ/オブジェクトコピー/リファレンスの二分法があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top