js область действия и перечисление свойств - PullRequest
1 голос
/ 08 июля 2011

Weird!

Я работаю над плагином для Moodle, используя javascript. Я не специалист по 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 не запускается.

Самое смешное, что в других областях он запускается и перебирает свойства. В консоли отладки в моем браузере или в других функциях. Я не могу понять, почему это так.

Джейми

Ответы [ 3 ]

0 голосов
/ 08 июля 2011

Ваш цикл for выводит правильные свойства, но в произвольном порядке. В Javascript итерация над свойствами не определяет порядок.

0 голосов
/ 09 июля 2011

Я продолжал размышлять над этим вопросом и решил, что, надеюсь, правильно здесь: http://moodle.org/mod/forum/discuss.php?d=180893

0 голосов
/ 08 июля 2011
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);
    }

?

(P знайте о hasOwnProperty (), если делаете для in.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...