Как правильно клонировать объект, чтобы он оставался и при удалении исходника
Сабж...
var Obj_old={...}
var New_Obj ???
|
|
Я вкурсе только про создание нового объекта и копирование в него всех свойств.
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 Думаешь есть что-то поинтереснее? |
var b = {a: 123};
var a = JSON.stringify(b);
a = JSON.parse(a);
b = null;
alert(a.a);
|
рони,danik.js, Спс
Мож еще devote подскажет(или B@rmaley.e><e Cвойства исходника могут быть и приватные и вложенные ... Разбираюсь пока... Задача клонировать фреймворк |
рони, действительно, интересно. Не во всех случаях подходит коечно, но когда нужно быстро сделать копию, без всяких вспомогательных функций - самое то. В хроме работает где-то в 2 раза медленней чем клон через копирование свойств.
|
:blink: Пока работает:
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;
|
http://jsperf.com/deep-object-copy-vs-json
Вот еще, но тут хренотень какая то. http://jsperf.com/cloning-an-object/54 Какой еще ES5 Object.clone ... |
Цитата:
|
Дзен-трансгуманист,
http://javascript.ru/tutorial/events/crossbrowser Цитата:
|
| Часовой пояс GMT +3, время: 19:32. |