![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Участник ![]() ![]() Группа: Пользователь Сообщений: 55 Регистрация: 13.02.2010 Пользователь №: 9767 ![]() |
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 и при этом что бы при изменении каждой из этих переменных изменения не затрагивали другую??? |
|
|
![]() |
![]()
Сообщение
#2
|
|
Заряд: 100% ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1118 Регистрация: 12.03.2008 Пользователь №: 4145 ![]() |
Код var x:Object = {test:1};
var y:Object = {test:2}; |
|
|
![]()
Сообщение
#3
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1181 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
Все дело в том, что 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 Пишу прямо сюда, без проверки. Но вряд ли ошибаюсь ![]() -------------------- |
|
|
![]()
Сообщение
#4
|
|
Участник ![]() ![]() Группа: Пользователь Сообщений: 55 Регистрация: 13.02.2010 Пользователь №: 9767 ![]() |
а если структура объекта x неизвестна, и надо заполнить y теме же переменными что и x, но что б при изменении данных x или y изменения не затрагивали другой объект??? При этом объект x может быть произвольной структуры, включая вложенные объекты, т.е. например:
x = {test:1, test2 : { x:10, y: { y:1 } } } Сообщение отредактировал serenya1983 - 4.07.2011 - 10:54 |
|
|
![]()
Сообщение
#5
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1181 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
Есть классный цикл for in - это для 1-го варианта.
А у 2-го варианта вообще нет этой проблемы. Сообщение отредактировал chingachgoog - 4.07.2011 - 18:33 -------------------- |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 1.08.2014 - 04:32 |