javascript-用另一个对象替换一个对象

javascript-用另一个对象替换一个对象,javascript,Javascript,当然,obj1没有改变。但是如果我只能访问foo,如何在整个脚本中用obj2替换obj1?您应该删除obj1中的所有属性,然后添加obj2中的所有属性。但请注意,obj1不会保留对与obj2相同对象的引用,而是创建一个新的克隆对象。另请注意,以下是以a为目标的浅层克隆: var obj1 = New MyObject('Object 1'); var obj2 = New MyObject('Object 2'); var foo = { anObject : obj1 }; foo.anO

当然,
obj1
没有改变。但是如果我只能访问
foo
,如何在整个脚本中用
obj2
替换
obj1

您应该删除obj1中的所有属性,然后添加obj2中的所有属性。但请注意,obj1不会保留对与obj2相同对象的引用,而是创建一个新的克隆对象。另请注意,以下是以
a
为目标的浅层克隆:

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

var foo = { anObject : obj1 };

foo.anObject = obj2;
console.log(obj1.name);

不清楚你在问什么你的代码+引用它时使用
foo.anObject
而不是
obj1
。你想“在整个脚本中”替换它干什么?@billymon@Bergi我想要一个指针。在C中,它应该是
foo.anObject=&obj1
,然后是
*(foo.anObject)=obj2
,这不是理想的解决方案,但也不是理想的情况+1对于一个简单而干净的解决方案,它适用于我现在所做的事情,但是没有更干净的解决方案吗?第5行中的循环体应该是'a[prop]=b[prop];'?
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