奇怪的!

我正在使用javascript开发Moodle插件。我不是js专家,只是开始。我在被调用的对象上的函数中有一些调试代码:

    console.log(M.core_filepicker.instances);
    for (var clientid in M.core_filepicker.instances) {
        console.log(M.core_filepicker.instances[clientid]);
    }


console.log位输出以下内容:

Object
4e16f16a0dc14: FilePickerHelper
4e16f16a1837e: FilePickerHelper
4e16f16a03933: FilePickerHelper
4e16f169cd12c: FilePickerHelper
4e16f169d70e0: FilePickerHelper
4e16f169e2466: FilePickerHelper
4e16f169ed42e: FilePickerHelper


具有属性键4e16 ...等的“对象”以及FilePickerHelper类型的这些属性的值。

但是for循环不会运行。

有趣的是,它确实在其他范围内运行并遍历属性。在我的浏览器或其他功能的调试控制台中。我不明白为什么会这样。

杰米

最佳答案

for (var i = 0; i < myArray.length; i++)

for (var i in myArray)


是不同的构造。在我看来,循环内的代码将更喜欢for的第一种类型。

是什么

 for (var instance in M.core_filepicker.instances) {
        console.log(instance);
    }


给你?

(如果在for中执行操作,则请注意hasOwnProperty()。)

10-06 13:06