0

这种模式真的让我的船漂浮,但我怎样才能让它充当一个基类而不使用'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
4

1 回答 1

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
于 2014-05-26T17:46:56.017 回答