Javascript 在嵌套For循环中运行Eval

Javascript 在嵌套For循环中运行Eval,javascript,jquery,loops,for-loop,eval,Javascript,Jquery,Loops,For Loop,Eval,我试图在嵌套for循环中运行eval函数。例如,在下面的代码中,要获取item2.length,必须使用eval运行item2[x].create()。create是我编写的一个自定义功能。当我在控制台中测试时,它工作。我知道使用eval有很多耻辱感。但请忽略这一点。我只是想知道为什么eval不能在嵌套for循环中工作 当我运行代码时,它会抛出一个错误,它无法获取item2[x]的长度。但当我在控制台中测试item2[x]的长度时,它给出了正确的长度。为什么我的代码运行不正常?嵌套循环似乎是在第

我试图在嵌套for循环中运行eval函数。例如,在下面的代码中,要获取item2.length,必须使用eval运行item2[x].create()。create是我编写的一个自定义功能。当我在控制台中测试时,它工作。我知道使用eval有很多耻辱感。但请忽略这一点。我只是想知道为什么eval不能在嵌套for循环中工作

当我运行代码时,它会抛出一个错误,它无法获取item2[x]的长度。但当我在控制台中测试item2[x]的长度时,它给出了正确的长度。为什么我的代码运行不正常?嵌套循环似乎是在第一次评估完成之前运行的。请告知

            for (var x = 0; x < item1.length; x++) {
                eval("item2[x].create()");
                for (var y = 0; y < item2[x].length; y++) {
                    eval("item3[x][y].create()");
                    for (var z = 0; z < item3[x][y].length; z++) {
                        eval("item4[x][y][z].create()");
                    }
                }
            }
for(var x=0;x
您对该功能的使用不正确。您确定您甚至能够获得item2[x]嵌套的1级深度的长度吗

Object.create
函数需要一个参数,该参数构成正在创建的新对象的原型。一个简单的例子如下所示:

var parentObj = {
    value: 1, 
    getValue: function(){
        return this.value;
    }
};
var childObj = Object.create(parentObj);
如果您对继承现有原型不感兴趣,可以将
null
作为原型传入:

var myObj = Object.create(null);
或者,您可以使用:


为什么您认为您需要使用
eval
?我了解eval的风险。但这让这里更容易。出于疑问,请忽略评估风险。为什么会更容易?什么是
eval(“item2[x].create()”这样做
item2[x].create()不行?你是对的。。。我已经删除了evals,做了同样的事情。但同样的问题仍然存在。加载所有内容后,我可以在控制台中获取.length值。但是仍然没有为yitem1
item2
。(您的所有变量名都被禁用一个。)
var testObj = function(){
    this.value = 1;
    this.getValue = function(){
        return this.value;
    };
};
var myObj = new testObj();