克隆JavaScript对象的最有效方法是什么?我见过有人用obj = eval(uneval(o));
,但是that's non-standard and only supported by Firefox。
我做过像obj = JSON.parse(JSON.stringify(o));
这样的事情,但是我质疑它的效率。
我也看到过有各种缺陷的递归复制函数。
我很惊讶没有规范的解决方案存在。
发布于 2011-01-04 16:05:56
假设您的对象中只有变量而没有任何函数,您可以只使用:
var newObject = JSON.parse(JSON.stringify(oldObject));
发布于 2008-09-23 16:38:51
如果没有任何内置的,你可以试试:
function clone(obj) {
if (obj === null || typeof (obj) !== 'object' || 'isActiveClone' in obj)
return obj;
if (obj instanceof Date)
var temp = new obj.constructor(); //or new Date(obj);
else
var temp = obj.constructor();
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
obj['isActiveClone'] = null;
temp[key] = clone(obj[key]);
delete obj['isActiveClone'];
}
}
return temp;
}
发布于 2009-12-12 06:47:19
这就是我正在使用的:
function cloneObject(obj) {
var clone = {};
for(var i in obj) {
if(typeof(obj[i])=="object" && obj[i] != null)
clone[i] = cloneObject(obj[i]);
else
clone[i] = obj[i];
}
return clone;
}
https://stackoverflow.com/questions/122102
复制相似问题