[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Копирование / клонирование объекта.
AllesKlar
Здрасти...

Уже глаз дергается.
В этом :%:;;% JavaScript, чтоли нет реализации клонирования объектов???

var obj = 
{
id: 1,
name: 'bla-bla-bal',
ch_obj: {id: 1, name: 'abl-abl-abl'}

}


В объекте только данные, без методов, но есть неопределенное количество вложенных объектов.

Ничего умнее не придумал:

var str 		= JSON.stringify(obj);
var obj_clone = JSON.parse(str);


_____________
[продано копирайтерам]
Dezigo
Ваш способ вполне нормальный, но можно и через jquery:
// Shallow copy
var newObject = jQuery.extend({}, oldObject);

// Deep copy
var newObject = jQuery.extend(true, {}, oldObject);
AllesKlar
Dezigo
Спасибо.
Но что-то распарсить, а потом это собирать назад.. это НЕ нормально smile.gif
Ох уж этот яваскрипт...

_____________
[продано копирайтерам]
Invis1ble
Цитата
Но что-то распарсить, а потом это собирать назад.. это НЕ нормально smile.gif
Ох уж этот яваскрипт...

а что ты хочешь от языка, который был разработан за 10 дней ? biggrin.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

AllesKlar
Invis1ble
А разве не за 7?
Вернее за 6, в воскресенье там сказано отдыхать, вроде smile.gif
Ну там.. свет.. земля.. вода.. JavaScript smile.gif

_____________
[продано копирайтерам]
HErATuB

var str = JSON.stringify(obj);
var obj_clone = JSON.parse(str);

Зачем?
Разве нельзя просто объявить в новой переменной?

var obj =
{
id: 1,
name: 'bla-bla-bal',
ch_obj: {id: 1, name: 'abl-abl-abl'}

}

var new_obj = obj;
alert(new_obj.ch_obj.name)
sergeiss
Цитата (HErATuB @ 27.02.2014 - 09:36)
Разве нельзя просто объявить в новой переменной?

Читал тему и был "ФФ шоке", пока не дошел до этой, первой разумной фразы smile.gif

И хотя тема "не совсем свежая", но все равно актуальная. Зачем извращаться как бы то ни было, если можно просто присвоить объекты, как обычные переменные, и JS сам всё скопирует???

PS. И да, extend тоже можно использовать. Но меня больше всего "изумили" в этой теме рассуждалки про JS. О его несовершенстве..

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Invis1ble
obj.name = '123';
alert(new_obj.name);

учим матчасть ;)

PS.
Цитата
Но меня больше всего "изумили" в этой теме рассуждалки про JS. О его несовершенстве..

А меня больше изумил факт не знания основ :P

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

glock18
Цитата (Invis1ble @ 27.02.2014 - 05:53)
А меня больше изумил факт не знания основ tongue.gif


Даже я такого не ожидал ohmy.gif
zelenuy
HErATuB
Цитата
Зачем?
Разве нельзя просто объявить в новой переменной?

var obj1 = {name:''};
var obj2 = obj1;
obj1.name = 'Вася';
obj2.name = 'Петя';
alert(obj1.name+' : '+obj2.name);

Не трудно догадаться что не какова Васи тут не будет
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.