Javascript:显示模块模式,使私有属性等于另一个私有属性

时间:2014-05-23 15:09:25

标签: javascript design-patterns

我在javascript代码中使用模块模式,最初我必须使私有属性等于另一个,但看起来它只是一个符号链接,就像在示例中一样。 我需要两个独立的私有属性,但有时会同步它们。

感谢您的帮助。

马克西姆。

    var module = (function () {

    var data1 = {
        pro1 : "aaa",
        pro2 : "bbb"
    };

    var data2 = {};

    function init() {
        data2 = data1;
    }

    function logg() {
        console.log(data1);
        console.log(data2);
    }

    function test() {
        data2.pro1 = 'haha';
    }

    return {
        init : init,
        logg : logg,
        test : test
    }

}());

module.init();

module.logg();

// data1 = { pro1 : "aaa", pro2 : "bbb" }
// data2 = { pro1 : "aaa", pro2 : "bbb" }

module.test();

module.logg();

// data1 = { pro1 : "haha", pro2 : "bbb" }
// data2 = { pro1 : "haha", pro2 : "bbb" }

1 个答案:

答案 0 :(得分:0)

如果你的简单对象示例类似于你将要使用的结构,也就是说没有来自你的对象的原型继承,你可以遍历你的对象并将值从旧到新分配。否则,您的简单作业将通过引用传递。

即:

for(var i in data1){
    data2[i] = data1[i];
}