Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.02.2013, 01:45
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Как правильно клонировать объект, чтобы он оставался и при удалении исходника
Сабж...
var Obj_old={...}
var New_Obj ???
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2013, 01:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Deff,
клонирование
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2013, 01:54
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Я вкурсе только про создание нового объекта и копирование в него всех свойств.

exports.copyObject = function(obj) {
    var copy = {};
    for (var key in obj) {
        copy[key] = obj[key];
    }
    return copy;
};

exports.deepCopy = function (obj) {
    if (typeof obj != "object") {
        return obj;
    }
    
    var copy = obj.constructor();
    for (var key in obj) {
        if (typeof obj[key] == "object") {
            copy[key] = this.deepCopy(obj[key]);
        } else {
            copy[key] = obj[key];
        }
    }
    return copy;
};


Это из https://github.com/ajaxorg/ace/blob/...ce/lib/lang.js

Думаешь есть что-то поинтереснее?
Ответить с цитированием
  #4 (permalink)  
Старый 06.02.2013, 02:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

var b = {a: 123};
var a =  JSON.stringify(b);
a =  JSON.parse(a);
b = null;
alert(a.a);
Ответить с цитированием
  #5 (permalink)  
Старый 06.02.2013, 02:19
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

рони,danik.js, Спс

Мож еще devote подскажет(или B@rmaley.e><e
Cвойства исходника могут быть и приватные и вложенные ...

Разбираюсь пока... Задача клонировать фреймворк
Ответить с цитированием
  #6 (permalink)  
Старый 06.02.2013, 02:19
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

рони, действительно, интересно. Не во всех случаях подходит коечно, но когда нужно быстро сделать копию, без всяких вспомогательных функций - самое то. В хроме работает где-то в 2 раза медленней чем клон через копирование свойств.
Ответить с цитированием
  #7 (permalink)  
Старый 06.02.2013, 02:31
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Пока работает:
var b = {a: {a: 123}};
var a =  JSON.stringify(b);
a =  JSON.parse(a);
b = null;
alert(a.a.a);

var b = {a: {a: {a: 333}}};
var a =  JSON.stringify(b);
a =  JSON.parse(a);
b = null;
alert(a.a.a.a);

var b = {a: {a: {a: alert(333)}}};
var a =  JSON.stringify(b);
a =  JSON.parse(a);
b = null;
a.a.a.a;


var b = {a: {a: {a: (function(){alert(333)}())}}};
var a =  JSON.stringify(b);
a =  JSON.parse(a);
b = null;
a.a.a.a;

Последний раз редактировалось Deff, 06.02.2013 в 03:18.
Ответить с цитированием
  #8 (permalink)  
Старый 06.02.2013, 02:43
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

http://jsperf.com/deep-object-copy-vs-json

Вот еще, но тут хренотень какая то. http://jsperf.com/cloning-an-object/54
Какой еще ES5 Object.clone ...
Ответить с цитированием
  #9 (permalink)  
Старый 06.02.2013, 02:53
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Дзен-трансгуманист
Што-што?
Сделаем вид что Deff имел ввиду плюшки ES6 Harmony ))
Ответить с цитированием
  #10 (permalink)  
Старый 06.02.2013, 03:03
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Дзен-трансгуманист,
http://javascript.ru/tutorial/events/crossbrowser
Цитата:
Мини-библиотечка Event будет представлять собой синглтон с несколькими приватными и двумя публичными функциями:
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать, чтобы при удалении div браузер не перепрыгивал наверх станицы EvgeniyRRU Events/DOM/Window 4 02.10.2011 12:42
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 11:46
Как при наведении на один объект изменять стили других? greysells jQuery 4 06.12.2009 11:00
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20
Как сделать, чтобы 2 ссылки отображались как hover при наведении мышкой на любую? Ava Элементы интерфейса 5 19.05.2009 23:24