让我说我有:
var obj1 = {
'0': 'a',
'1': 'b'
}
var obj2 = obj; // I want to create a new object with obj contents
obj1[2] = 'c' // Now I modify obj without modifying obj2
obj1 = obj2; // so I can restore obj later
然而修改obj也是修改obj2。如何创建独立于它的obj1副本?
答案 0 :(得分:4)
您需要对该对象执行 deepCopy 。
var obj1 = {
'0': 'a',
'1': 'b'
};
var obj2 = deepCopy(obj1);
obj1[2] = 'c'
console.log(obj1);
console.log(obj2);
function deepCopy(obj) {
var newObj = {};
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = obj[key];
}
}
return newObj;
}
<强> Check Fiddle 强>
答案 1 :(得分:2)
如果您的对象与JSON兼容(即,不包含任何函数作为值,也不包含对DOM节点的引用等):
var obj2 = JSON.parse(JSON.stringify(obj1));