为什么我可以通过在Javascript中更改objectB来将objectA分配给objectB并更改objectA的属性?

时间:2015-07-09 12:35:55

标签: javascript object

在JavaScript中,

我刚发现

var a = {};
a.name = "132";
var b = a;
console.log(b);
b.name = "efg";
console.log(a);//**display "123","efg"**

似乎我可以将objectA分配给objectB,并通过在Javascript中更改objectB来更改objectA的属性。

但这将工作:

var aa = 1;
var bb = aa;
console.log(bb);
bb = 2;
console.log(aa);//**display "1","1"**

我只是想知道为什么会这样?

JSFiddle https://jsfiddle.net/Pencil_Case/2wxxmgvx/3/

1 个答案:

答案 0 :(得分:4)

因为当您将对象分配给另一个对象时,它不会被复制,只会给出引用。

在Javascript中,复合数据类型(对象,数组)通过引用复制

var b = a; // Get the reference of a and assign to b

如果您想获取对象副本assign

var b = Object.assign({}, a);