我有一个对象,x'。我想把它复制成对象
y,这样
y的变化就不会修改
x`。我意识到,复制从内置JavaScript对象衍生出来的对象将导致额外的、不需要的属性。这不是一个问题,因为我复制的是我自己的一个字面结构的对象。
我怎样才能正确地克隆一个JavaScript对象?
本文来自:如何在Javascript中复制数组和对象 作者:Brian Huisman。
Object.prototype.clone = function() {
var newObj = (this instanceof Array) ? [] : {};
for (var i in this) {
if (i == 'clone') continue;
if (this[i] && typeof this[i] == "object") {
newObj[i] = this[i].clone();
} else newObj[i] = this[i]
} return newObj;
};
如果你的对象中没有循环依赖关系,我建议使用其他答案之一或jQuery'的复制方法,因为它们似乎都很有效。
如果有循环依赖关系(即两个子对象相互链接),你就有点完蛋了,因为(从理论上看)没有办法优雅地解决这个问题。