Javascript 如何使此对象模式工作?

Javascript 如何使此对象模式工作?,javascript,module,iife,Javascript,Module,Iife,这个模式确实可以让我的船漂浮起来,但是我如何才能让它在不使用“new”、“This”或“Object.create()”的情况下充当基类呢?可能吗 var myObj = (function () { var x = 0; var privFunc = function() { console.log(x); }; // interface return { init : function (arg) { x=arg; },

这个模式确实可以让我的船漂浮起来,但是我如何才能让它在不使用“new”、“This”或“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

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

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

如果希望它返回
123
,则不要在
init
函数中更改其值。然而,除非你对
x
有其他用途,否则这个模式就毫无意义了;进一步阅读,我似乎正在创建一个更易于使用的工厂函数。我不太喜欢“this”和“new”关键字,我想把我的模块写成对象。在我开始一个大项目之前,我试图确定一个一致的模式——这是令人困惑的东西。