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 

2 番目の一連の console.logs は、最後に作成したオブジェクトを 5 回出力します。

 5 x thename4 

私は何か間違ったことをしていますか?またはこれは予想されますか?

また、それが予想される場合。後で使用するために作成したオブジェクトを保存できるという問題をどのように解決しますか?

4

1 に答える 1