PDA

Просмотр полной версии : Ссылка на элемент массива, проблема записи


chingachgoog
08.11.2007, 18:00
В данном коде все работает:

arr1=[]
arr1[0]={obj1:[]}
arr1[0].obj1[0]={d:"aaaa"}

trace(arr1[0].obj1[0].d) // aaaa


Но если я делаю ссылку на ячейку массива, то не выходит:


arr1=[]
arr1[0]={obj1:[]}
link=arr1[0].obj1[0]
link={d:"aaaa"}
trace(arr1[0].obj1[0].d) // undefined


Понятно почему так получается:

link=arr1[0].obj1[0] - ссылка на ячейку массива
тогда как следующая запись
link={d:"aaaa"} вместо того, чтобы в ячейку массива записать объект,
создает ссылку на некий абстрактный объект.

Вопрос, как правильно записать, чтобы работало со ссылкой?

etc
08.11.2007, 18:09
Так не получится.

Mnilionic
08.11.2007, 18:42
можно через доволнительный ключ

arr1 = [];
arr1[0] = {obj1:[]};
link = arr1[0].obj1[0] = [];

link["obj"] = {d:"aaaa"};

trace(arr1[0].obj1[0]["obj"].d)

chingachgoog
08.11.2007, 19:46
Нет, тогда объект {d:"aaaa"} становиться не в ячейку arr1[0].obj1[0], а в ячейку именнованного массива obj ячейки arr1[0].obj1[0]

Тут уж проще упростить сам link:

arr1=[]
arr1[0]={obj1:[]}
link=arr1[0].obj1
link[0]={d:"aaaa"}
trace(arr1[0].obj1[0].d) // aaaa


Жалко, что нельзя напрямую...

iNils
08.11.2007, 19:59
arr1 = [];
arr1[0] = {obj1:[{}]};
link = arr1[0].obj1[0];
link.d = "aaaa";
trace (arr1[0].obj1[0].d);

Ошибка в рассуждениях

arr1=[]
arr1[0]={obj1:[]}
link=arr1[0].obj1[0]
...
link=arr1[0].obj1[0] - ссылка на ячейку массива
link не является ссылкой на ячейку, так как массив пустой, а ссылаться на пустоту не получится.