1

私が持っているとしましょう:

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 から独立した obj1 のコピーを作成するにはどうすればよいですか?

4

2 に答える 2

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;
}​

フィドルをチェック

于 2012-12-14T22:59:43.457 に答える
2

オブジェクトが JSON 互換の場合 (つまり、関数を値として含まず、DOM ノードへの参照なども含まない):

var obj2 = JSON.parse(JSON.stringify(obj1));
于 2012-12-14T22:58:13.650 に答える