怪异!
我正在使用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循环没有运行。
有趣的是,它会在其他范围内运行并遍历属性。在我的浏览器或其他功能的调试控制台中。我不明白为什么会这样。
杰米
答案 0 :(得分:0)
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中执行for,请注意hasOwnProperty()。)
答案 1 :(得分:0)
您的for循环以任意顺序输出正确的属性。在Javascript中,迭代属性不指定顺序。
答案 2 :(得分:0)
我继续对这个问题进行反思并在此处正确解决了所发生的事情:http://moodle.org/mod/forum/discuss.php?d=180893