我编写了自己的 deepCopy-Function,它能够复制和对象:
function deepCopyObj(object){
if(object == null || typeof(object) != 'object'){
return object;
}
var copy = object.constructor(); //This line makes some troubles
for (var attr in object) {
if(object.hasOwnProperty(attr) && typeof(object[attr]) !== "undefined") {
copy[attr] = deepCopyObj(object[attr]);
}
}
return copy;
}
这段代码一直工作得很好 - 直到现在:
有时,当我想复制一个对象时,命令 var copy = object.constructor();
返回 undefined
。
这是什么原因呢?当我将 object
打印到控制台时,它会给出正确的输出。
请注意,我的代码有时使用 delete object.anAttribute;
来删除函数 - 但我不知道这是否是原因。
最佳答案
另请注意,您的 deepCopyObj() 将仅复制源对象的可枚举属性。
var obj = {name: "Andrew", lastname:"Smith"};
Object.defineProperty(obj,"id",{
enumerable:false,
configurable:true,
writeable:true,
value:"1"
});
var newObj = deepCopyObj(obj);
newObj.id 返回未定义
关于Javascript deepCopyObject 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21336843/