我如何使这个对象模式工作?

时间:2014-05-26 17:40:54

标签: javascript module iife

这种模式真的漂浮在我的船上,但是如何在没有使用' new'这个'这个'也不是' Object.create()'?有可能吗?

var myObj = (function () {

    var x = 0;
    var privFunc = function() { console.log(x); };

    // interface
    return { 
        init    : function (arg) { x=arg; },
        getVal  : privFunc
    };

}());

var abc = myObj;
abc.init(123);
abc.getVal(); //123

var xyz = myObj;
xyz.init(456);
xyz.getVal(); //456

abc.getVal(); //456? want it to return 123

1 个答案:

答案 0 :(得分:1)

您正在创建单个对象,然后您只需复制对它的引用。如果你想要单独的对象,你需要为每个对象调用一次函数:

function myObj() {

    var x = 0;
    var privFunc = function() { console.log(x); };

    // interface
    return { 
        init    : function (arg) { x=arg; },
        getVal  : privFunc
    };

}

var abc = myObj();
abc.init(123);
abc.getVal(); //123

var xyz = myObj();
xyz.init(456);
xyz.getVal(); //456

abc.getVal(); //123