2013-12-23 2 views
0

Привет Я использую следующий код для создания объектаКлонирование объекта в JavaScript

var parent = {}; 
parent["Task name"] = "Task " + ++x; 
parent["Start time"] = "01/03/2013"; 
parent["End time"] = "01/08/2013"; 
parent["Duration"] = "5 days"; 
parent["Status"] = Math.round(Math.random() * 100); 

Как клонировать/взять копию объекта с помощью JavaScript кода. Есть ли другой способ достичь этого?

ответ

1

Самый простой способ клонировать объект использует следующие функции:

function clone(a){var b=function(){};b.prototype=a;return new b;} 

Это создает основную копию объекта, не отметить, однако, что это не создает глубокую копию, только неглубокий один.

+0

@wared если вы получаете типError, то вход «a», очевидно, не является допустимым объектом, или вы пытаетесь передать в свой собственный объект (или вообще нет объекта), таким образом, вы должны ожидать отказа, поскольку он предназначен для обрабатывать только объекты javascript и ничего больше. – Entoarox

+0

@wared Я исправил его (b не был отлит как функция), исходный код был непосредственно из одного из моих уже укоренившихся скриптов, что-то, вероятно, пошло не так в минимизации. – Entoarox

+0

@wared Сценарий активно используется, поэтому не должно было возникнуть никаких проблем, но после проверки он получает код, который использует его, еще не нуждался в методе клонирования, поэтому ошибка была просто упущена. – Entoarox

0

Попробуйте это с JQuery:

var parent = {}; 
       parent["Task name"] = "Task " + ++x; 
       parent["Start time"] = "01/03/2013"; 
       parent["End time"] = "01/08/2013"; 
       parent["Duration"] = "5 days"; 
       parent["Status"] = Math.round(Math.random() * 100); 
var newObj = jQuery.extend(true, {}, parent); 
0

Самый простой способ заключается в следующем:

var clone = {}; 
for (var k in parent) { 
    clone[k] = parent[k]; 
} 

Работы в этом случае, так как все значения примитивных типов.

Смежные вопросы