【问题标题】:Why doesn't this work? Calling functions belonging to objects in a loop为什么这不起作用?在循环中调用属于对象的函数
【发布时间】:2009-03-20 19:26:08
【问题描述】:

在我的代码中,jsc.tools 是一个包含对象的对象。每个子对象都包含一个 init() 和 run() 方法。

我在启动时运行了以下代码:

for(tool in jsc.tools) {
    tool.init();
}

这给了我错误“tool.init 不是函数”。

工具声明示例如下:

jsc.tools.sometool = {};
jsc.tools.sometool.run = function() {
    // Apply tool
}
jsc.tools.sometool.init = function() {
    // Set bits of data needed for the tool to run
}

【问题讨论】:

    标签: javascript loops object


    【解决方案1】:

    javascript 中的 for in x 运算符为您提供对象的属性名称。试试:

    for(tool in jsc.tools) {
        jsc.tools[tool].init();
    }
    

    【讨论】:

    • 这也引起了我很多次。您可能认为 for(x in ..) 会将 x 设置为对象/数组/字符串/其他任何内容,但它只会将 x 设置为键。
    【解决方案2】:

    你需要使用

    for(tool in jsc.tools) {
        jsc.tools[tool].init();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 2019-06-28
      • 1970-01-01
      • 2023-01-28
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多