1

所以我对 js 还是很陌生,我想进入更高级的东西,但是我对工厂模式有这个问题,这是基本代码:

(function () {

    var objs = [];

    function createObj(name) {

        var thename = name;

        return {
            publicsaythename : function () {
                console.log(thename);   
            }
        }
    }

    for(var i = 0; i < 5; i++) {
        var theObj = createObj("thename" + i);
        theObj.publicsaythename();

        objs.push(theObj);
    }

    for(var i = 0; i < objs.length; i++) {
        theObj.publicsaythename();
    }

})();

第一系列 console.log 调用输出我所期望的:

thename0
thename1 
thename2 
thename3 
thename4 

第二系列的 console.logs 输出我创建的最后一个对象 5 次。

 5 x thename4 

难道我做错了什么?还是这是预期的?

如果它是预期的。您如何解决能够存储您创建的对象以供以后使用的问题?

4

1 回答 1

2

您只在变量中存储一个对象引用theObj,因此输出符合预期。

我认为这是您打算在第二个循环中执行的操作:

for(var i = 0; i < objs.length; i++) {
     objs[i].publicsaythename();
}

因此,存储对象的方式没有任何问题。我猜你只是在使用它们时犯了一个错误。:-)

于 2013-04-17T17:58:12.320 回答