我怎样才能在JavaScript中制作一个对象的副本?
这个问题在这里已经有了答案:
您将不得不将每个属性映射到新数组:
简单的一级克隆可以这样做:
function clone(a, b) {
var prop;
for( prop in b ) {
b[prop] = a;
}
}
这将克隆从b
到a
所有属性。 但请所有其他属性a
:
var a = {a: 9, c: 1},
b = {a: 1, b: 1};
copy(a, b); // {a: 1, b: 1, c: 1}
深克隆对象:
上面的例子在处理单个级别的对象时会起作用,但是当存在多个级别时会造成混乱,请看下面的例子:
var a = {},
b = { a: { a: 1 } }
clone(a, b);
a.a.a = 2;
console.log(a); // { a: { a: 2 } }
console.log(b); // { a: { a: 2 } }
上面的例子证明了aa
内部的对象与ba
内部的对象相同。