PDA

Просмотр полной версии : Пропадает ссылка на объект из массива


chingachgoog
05.06.2007, 17:33
Есть некий массив (arr1), содержащий в себе объекты (ссылки на объекты):


arr1=[]

for (i=0; i<4; i++) {
arr1[i]={t:"проверка1"}
}


Создается новый массив (копируется), в котором лежат те же ссылки на те же объекты:


arr2=[]
arr2=arr1.slice()


Пока все нормально, и трассировка второго массива работает корректно:


trace(arr2[0].t+" "+arr1[0].t) // проверка1 проверка1
arr2[0].t="end"
trace(arr2[0].t+" "+arr1[0].t) // end end


Далее собственно мой тупик :)

хотел создать третий массив на основе второго, извлекая из второго массива методом splice ссылки на объекты.
Но ничего не вышло :(


trace(arr2.splice(0, 1).t) // undefined

BigDan
05.06.2007, 17:50
метод splice() возвращает массив, а не объект.
trace(arr2.splice(0, 1)[0].t)

chingachgoog
05.06.2007, 18:02
Правильно.
Возращает массив, элементами которого должны (по идее) быть ссылки на объект. Но этого не происходит.
Элементами массива являются объекты (тоже трейситься легко). Но какие-то "левые". Без нужных свойств. Т.е. сама ссылка на объект пропадает.

NB!

Спасибо BigDan!
Не сразу осознал глубину мысли :)
Действительно:
arr2.splice(0, 1) - возращает массив, и чтобы обратиться к объектам массива необходимо указать номер ячейки массива: arr2.splice(0, 1)[0].t

Вот что значит чужой незамыленный глаз!