PDA

Просмотр полной версии : Ссылка на ссылку


miramax
10.11.2006, 21:58
Существует объект А. И есть ссылки на этот объект - а, б, в, г, д.... Сколько ссылок и где они находятся я не знаю. Можно ли заменить во всех ссылках объект А на объект Б ?
Давно известно, что фишки типа

а = 5;
b = a;
a = 6;
trace(b) //5 - а равно 6, а b по-прежнему хранит значение 5
не проходят. Т.е. нельзя создать ссылку на ссылку

silin
10.11.2006, 22:55
это смотря что называть ссылкой, в твоем же примере не ссылка..
на простые типы вообще нельзя организовать ссылку
а ежели на объект
a = {val:5};
b = a;
a.val = 6;
trace(b.val)//6

Dendroid
10.11.2006, 23:10
Это тебе не ссылку надо, а "синоним" (как в Си). Во флэше этого нет.
Тут даже ссылка всего одного типа Object, правильно silin говорит. :)

miramax
11.11.2006, 00:06
Да, примитивы передаются по значению, я пример неправильный привёл. Это должно было звучать так:

а = {name:'i am A'};
b = a;
a = {name:'i am new'};
trace(b.name)

silin
11.11.2006, 01:22
ага, незадача: ссылку не перенаправить ..
остается свой механизм ссылок реализовать, типа:
class Ref {
var obj;
function Ref(name,owner){
obj=owner[name];
owner.watch(name,setRef);
}
function setRef(p,o,n){
obj=n;
return n;
}
}
//////////////////
a = {name:'i am A'};
var ref=new Ref("a",this);
b=ref;//c=ref; etc.
a = {name:'i am new'};
trace(b.obj.name);

AlDev_
11.11.2006, 08:16
или юзать биндинг

etc
11.11.2006, 14:44
Собственно, «a» тоже является ссылкой на объект…

silin
11.11.2006, 14:53
__etc, об этом и речь: «a» ссылка на объект, а нужна ссылка на ссылку чтоб поменяв последнюю, перенаправить всех кто ссылается на первую..

FlexBuilder
12.11.2006, 15:02
2 miramax
небось игрушку пишешь :)

сделай словать или прокси