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 回答