javascript - 尝试在 for 循环中创建对象

标签 javascript

我确信有一个非常简单的解决方案,但我无法解决这个问题。我正在尝试在 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/

相关文章:

javascript - 窗口调整大小事件在 ie7 中不断触发

javascript - 删除部分img src

javascript - 如何获取 translateX 和 translateY 的值?

javascript - webpack < 5 默认情况下用于包含 Node.js 核心模块的 Polyfill。这已不再是这种情况

javascript - 子字符串、拆分、字符串到数字和 RGB 到十六进制

javascript - 如何通过自定义函数/脚本通过正确的授权从 Google 表格中的文件名获取文件 URL

javascript - 在 Laravel Blade 中循环并显示图像,更改旧的 Angular 代码

javascript - 使用 Angular,如何将 `input` `ng-repeat` 中的 `div` 文本绑定(bind)到另一个 `div` 中的另一个 `ng-repeat` ?

javascript - 渲染时绘制图表加载动画