Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Значения переменных
Flash Zone Forum > Macromedia Flash > Начинающим
serenya1983
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
Код
var x:Object = {test:1};
var y:Object = {test:2};
chingachgoog
Все дело в том, что 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


Пишу прямо сюда, без проверки. Но вряд ли ошибаюсь smile.gif
serenya1983
 а если структура объекта x неизвестна, и надо заполнить y теме же переменными что и x, но что б при изменении данных x или y изменения не затрагивали другой объект??? При этом объект x может быть произвольной структуры, включая вложенные объекты, т.е. например:
x = {test:1,
test2 : {
x:10,
y: {
y:1
}
}
}
chingachgoog
Есть классный цикл for in - это для 1-го варианта.
А у 2-го варианта вообще нет этой проблемы.
Русская версия IP.Board © 2001-2017 IPS, Inc.