我确信有一个非常简单的解决方案,但我无法解决这个问题。我正在尝试在 for 循环中创建对象数组,如下所示:
for(var i = 0; i < 100; i++) {
foos[i] = new Foo(i*10);
bars[i] = someObject.createBar({
x : 0,
y : 0,
foobar = function() {
foo[i].a = true;
}
});
}
当尝试运行它时,我得到“无法设置未定义的属性 a”,foos 和 bars 都在代码的前面声明为全局变量。
如果我将 foos 创建为 foos[0] 并通过 bars[0] 访问,它会工作正常。我怀疑这与函数级范围界定有关,但据我所知,数组应该可以在全局对象上访问....
最佳答案
您需要“锚定”i
的值。要做到这一点...
for(var i=0; i<100; i++) {
(function(i) {
// now do stuff with i
})(i);
}
关于javascript - 尝试在 for 循环中创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11089426/