js中a、b两个空对象,b赋值给a,a增加属性,此时b也有了a的属性,这是为什么?

代码很简单,如下

var a = {}
var b = {}
a = b
a.value1 = 1
a.value2 = 2

console.log(b) // {value1: 1, value2: 2}

想问的是为什么b会跟着a的值变化而变化

阅读 2.6k
3 个回答

对象本身是引用类型,赋值相当于浅拷贝(你可以理解为赋值了一份引用地址,而不是赋值的真正的数据值),当你往真正的数据添加值之后,所有之前的引用得到的值当然都会改变

这是基础知识了。

a = b, 即传递了b引用的对象,也就是a、b现在都引用了同一个对象

引用类型a是将地址指针赋值给b。这篇文章深浅拷贝里有写链接描述

推荐问题
宣传栏