Проблема с массивом объектов.
for(var j=0; j<3; j++){ array_of_marker = new Array() array_of_marker.push(new Object()) array_of_marker[j]={id: 10} alert(array_of_marker[0]['id']) } Три раза должно появиться сообщение с цифрой 10. А получаю: 10, undefined, undefined. Где я ошибаюсь? |
Во всём.
Каждый раз делаете новый массив - array_of_marker = new Array() Добавляете ему в конец новый объект array_of_marker.push(new Object()) Индексу массива - j - присваиваете новый объект со свойством id и значением 10 Показываете id индекса 0 у последнего массива Теперь сделайте выводы. |
Цитата:
А в остальном все верно, все как мне надо было. "Вталкиваю" новый объект в массив, потом элементу массива с индексом j, то есть объекту добавляю свойство id равно 10. Ну блаодарю:thanks: |
Вы не добавляете свойство id, вы на месте только что впихнутого объекта ставите другой у которого есть свойство id. То есть вторая строка вообще лишняя или третья строка должна выглядить так array_of_marker[j].id = 10; В последней тоже, похоже, опечатка. Вместо 0 должен быть j.
|
Kfuse,
А, ну да, точно... Опять лажаю) А с 0 - это просто для примера. Раз уж о массивах заговорил то еще у меня такой вопрос: Создаю два массива var a = new Array() var b = new Array() В коде они используются так: - Сначала формируется массив a. - Начинается цикл - По массиву а создается массив b. - В конце цикла делаю так: a = b b = new Array() - Далее к следующей итерации цикла. Таким образом, указатель на массив b теряется при каждой итерации и каждый раз создается новый массив b в памяти. В учебнике(http://javascript.ru/basic/array) прочитал: Цитата:
|
Ну да. Разумеется с учётом косвенных указателей, типа у вас есть указатель на объект, одно из свойств которого указывает на другой объект и т.п. Всё до чего нельзя добраться по таким вот цепочкам указателей будет удалено при следующем прохоже сборщика-мусора. Когда именно будет этот проход точно сказать невозможно. Обычно при нехватке памяти выделенной процессу.
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 21:19. |