这种模式真的漂浮在我的船上,但是如何在没有使用' 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
答案 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