var obj1 = New MyObject('Object 1');
var obj2 = New MyObject('Object 2');
var foo = { anObject : obj1 };
foo.anObject = obj2;
console.log(obj1.name);
自然地,obj1
没有改变。但是如果我只能访问 foo
,怎样才能在整个脚本中用 obj2
替换 obj1
呢?
var obj1 = New MyObject('Object 1');
var obj2 = New MyObject('Object 2');
var foo = { anObject : obj1 };
foo.anObject = obj2;
console.log(obj1.name);
自然地,obj1
没有改变。但是如果我只能访问 foo
,怎样才能在整个脚本中用 obj2
替换 obj1
呢?
您需要删除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
obj1
时,请使用foo.anObject
。 - Fabrício Mattéfoo.anObject = &obj1
然后*(foo.anObject) = obj2
。 - Lithy