Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разрыв связи с обьектом 
:(
    Опции темы
neoks
Дата 19.2.2013, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Есть переменная обьект которая постоянно обновляется, я пытаюсь выдернуть позицию по нажатии кнопки и присвоить другой переменной, но тут беда получается так как получается не копия а ссылка.

Вот пример

Код

var obj1 = {position:[56,76]};
var obj2 = {position: [67,34]};

for(){
    //тут постоянно происходит цикл например перемещение первого обьекта и записывает позицию для obj1
}

//тут функция нажатии на клаву где мне нужно свистнуть позицию obj1 на данный момент

obj2.position = obj1.position


В результате obj2 имеет ссылку на obj1 и по мере обновления позиции obj1, obj2 следует по такому же пути что и obj1 , как получить копию позиции а не ссылку ? )

Это сообщение отредактировал(а) neoks - 19.2.2013, 17:09
PM MAIL   Вверх
Aliance
Дата 19.2.2013, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Все объекты в JS передаются по ссылке, это нормально. Для клонирования объектов можно использовать функцию jQuery.extend или воспользоваться гуглом для поиска аналога на нативном языке.
PM MAIL WWW ICQ Skype   Вверх
Amphiluke
Дата 19.2.2013, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Код

obj2.position = obj1.position.slice(0);

PM   Вверх
neoks
Дата 19.2.2013, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Воспользовался, вроде как норм ))
Код

JSON.parse(JSON.stringify(obj))

PM MAIL   Вверх
Amphiluke
Дата 19.2.2013, 18:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Цитата(Aliance @  19.2.2013,  21:30 Найти цитируемый пост)
или воспользоваться гуглом для поиска аналога на нативном языке.

Кстати, а разве есть в нативном ECMAScript соответствующий метод клонирования? Я думаю, если б был, jQuery первым делом проверяла бы его доступность (для повышения производительности), однако в исходниках никаких таких проверок нет.

Добавлено через 3 минуты и 37 секунд
Цитата(neoks @  19.2.2013,  22:46 Найти цитируемый пост)
Воспользовался, вроде как норм

Поддержка старых IE для вас, вижу, не стоит как задача =)

Это сообщение отредактировал(а) Amphiluke - 19.2.2013, 18:52
PM   Вверх
neoks
Дата 19.2.2013, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Цитата(Amphiluke @  19.2.2013,  18:51 Найти цитируемый пост)
Поддержка старых IE

Разумеется нет )), особенно старых, не знаю когда он уже вообще умрет  smile 
PM MAIL   Вверх
Amphiluke
Дата 19.2.2013, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Цитата(neoks @  19.2.2013,  23:05 Найти цитируемый пост)
Разумеется нет

В таком случае для вашей задачи способ с JSON вполне хорош. Но для общего случая клонирования объектов не годится (теряются методы и другие не сериализуемые свойства).
PM   Вверх
Aliance
Дата 20.2.2013, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Цитата(Amphiluke @  19.2.2013,  19:51 Найти цитируемый пост)
Кстати, а разве есть в нативном ECMAScript соответствующий метод клонирования?

нет, но их можно реализовать.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0665 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.