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
?
答案 0 :(得分:4)
您应该删除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