js替换对象/更改引用

时间:2017-01-23 19:48:58

标签: javascript

我有一个我想要替换的对象。 - >

var obj1 = { x: 'a' };
var ref = obj1;
var obj2 = { y: 'b' };
obj1 = obj2;

结果

ref = { x: 'a' }

但我希望它也可以改为指向obj2来获取

ref = { y: 'b' }

2 个答案:

答案 0 :(得分:2)

不可能。 JS通过引用的副本传递对象,因此在步骤var ref = obj1中,您实际上并没有像使用C语言那样分配引用指针。相反,您创建的引用副本指向一个看起来像{x: 'a'}的对象。

有关您拥有的其他选项,请参阅此答案:https://stackoverflow.com/a/17382443/6415214

答案 1 :(得分:1)

您可以尝试使用obj2

字段更改obj1的所有字段
var obj1 = { x: 'a' };
var ref = obj1;
var obj2 = { y: 'b' };
obj1.x = obj2.y;
console.log(ref) // Print {x, 'b'}

如果你想添加{y,'b'},你可以按照方法

obj1.y=obj2.y
console.log(obj1); prints {x: "b", y: "b"}
console.log(ref); prints {x: "b", y: "b"}

如果你想删除obj1.x,你可以做类似的事情

delete obj1.x;
console.log(ref) prints {y:'b'}