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
のですか?obj2
foo
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
のですか?obj2
foo
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