Странная проблема со свойством объекта - присутствует вне цикла, отсутствует внутри цикла - PullRequest
2 голосов
/ 27 января 2010

У меня сейчас действительно странная проблема.

markers - массив объектов.

0  
     content (String)
     coords (Object)
     gMarker (Object)
1  
     content (String)
     coords (Object)
     gMarker (Object)
2  
     content (String)
     coords (Object)
     gMarker (Object)

Пока все хорошо.

Проблема:

console.dir(markers); 
/**
 * output as expected
 */
for(var i in markers) {
    console.dir(markers[i]); 
    /** 
     * gMarker object is missing!
     * markers[i] suddenly consists just of content and coords
     */

Как это может быть?

Редактировать: Должно быть, это как-то связано с функцией обратного вызова "load" карт Google. Это срабатывает немного рано, по крайней мере, в моем случае. Я заменил этот обратный вызов (GEvent.addListener (map, «load», callback_fn)) на простой setTimeout, который запускает мою функцию обратного вызова через 2 секунды, и теперь все работает как положено.

В любом случае, это не объясняет, почему свойство gMarker недоступно внутри этого цикла for, что даже не может быть условием гонки, поскольку цикл начинается сразу после той точки, где объект все еще в порядке.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2010

Это странно, мой Firebug console.dir даже не работает с for-in в массиве.

Это может быть связано с тем, что i является глобальной переменной, установленной в другом месте, но, скорее всего, это вызвано из-за того, что свойство загружается позднее. Вы вручную устанавливаете объект или как он загружается?

for (var i=markers.length;i--;){
   console.dir(markers[i]);
}
0 голосов
/ 27 января 2010

Разве это не должно быть

for(var i in markers) {
    console.dir(i); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...