Javascript在另一个对象中保存对象的当前内容?

时间:2012-12-14 22:57:03

标签: javascript

让我说我有:

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副本?

2 个答案:

答案 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));