var x:Object = {test:1}; trace(x);// test:1 var y = x; y.test = 10; trace(x);// test:10 trace(y);// test:10 как переменной y присвоить значение переменной x и при этом что бы при изменении каждой из этих переменных изменения не затрагивали другую???
HaWK
4.07.2011 - 10:38
Код
var x:Object = {test:1}; var y:Object = {test:2};
chingachgoog
4.07.2011 - 10:39
Все дело в том, что x и y - это ССЫЛКИ на один и тот же ОБЪЕКТ. Решить проблему можно по-разному:
Код
var x = {test:1}; trace(x.test); // 1 var y = {} y.test=x.test trace (y.test) // 1 y.test = 10; trace(x.test);// 1 trace(y.test);// 10
или так (AS1):
Код
var x = {test:1}; trace(x.test); // 1 var y = {} y.__proto__=x trace (y.test) // 1 y.test = 10; trace(x.test);// 1 trace(y.test);// 10
Пишу прямо сюда, без проверки. Но вряд ли ошибаюсь
serenya1983
4.07.2011 - 10:53
а если структура объекта x неизвестна, и надо заполнить y теме же переменными что и x, но что б при изменении данных x или y изменения не затрагивали другой объект??? При этом объект x может быть произвольной структуры, включая вложенные объекты, т.е. например: x = {test:1, test2 : { x:10, y: { y:1 } } }
chingachgoog
4.07.2011 - 18:31
Есть классный цикл for in - это для 1-го варианта. А у 2-го варианта вообще нет этой проблемы.