javascript - 将一个对象替换为另一个对象

Lit*_*thy 3 javascript

var obj1 = New MyObject('Object 1');
var obj2 = New MyObject('Object 2');

var foo = { anObject : obj1 };

foo.anObject = obj2;
console.log(obj1.name);
Run Code Online (Sandbox Code Playgroud)

自然obj1是没变。但是假设我只能访问,如何在整个脚本中替换obj1by ?obj2foo

and*_*lrc 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
Run Code Online (Sandbox Code Playgroud)