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