3
var obj1 = New MyObject('Object 1');
var obj2 = New MyObject('Object 2');

var foo = { anObject : obj1 };

foo.anObject = obj2;
console.log(obj1.name);

当然、obj1変わりませんでした。しかし、アクセスできると仮定して、スクリプト全体でどのように置き換えるobj1のですか?obj2foo

4

1 に答える 1

5

obj1 のすべてのプロパティを削除してから、obj2 のすべてのプロパティを追加する必要があります。ただし、obj1 は obj2 と同じオブジェクトへの参照を保持せず、新しいクローン オブジェクトを作成することに注意してください。aまた、以下はターゲットとしての浅いクローン作成であることに注意してください。

var replaceObject = function(a, b) {
    var prop;

    for ( prop in a ) delete a[prop];
    for ( prop in b ) a[prop] = b[prop]; 
};

var a = {a: 1},
    b = {b: 2};

replaceObject(a, b);

a // {b: 2};
// but:
a === b // false
于 2013-08-24T17:08:34.967 に答える