在Revealing Module Pattern中公开私有变量

Dio*_*oso 11 javascript design-patterns revealing-module-pattern

我正在尝试实现Revealing Module Pattern,但我无法公开修改后的私有属性.

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".
Run Code Online (Sandbox Code Playgroud)

lon*_*day 21

return {
    fullName: name,
    set: setName
};
Run Code Online (Sandbox Code Playgroud)

使用该namesetName.它不会创建对变量的引用.有效地,name被复制.

您需要创建一个相应的getName方法,以利用闭包,以便您可以保持对变量的引用.


xan*_*ded 14

var myRevealingModule = (function(){

    var name = 'Diogo';

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

    function getName () {
       return name;
    };

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

}());
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/yeXMx/