为了账号安全,请及时绑定邮箱和手机立即绑定

对象的比较

对象用引用去比较而不是用值中“引用”是什么意思?

正在回答

2 回答

对象比较是指该命名下,他们对内存中存储数据的比较;

举个例子吧,直接声明一个对象和构造一个对象,可能值是一样的,但是内存中的数据肯定是不同的,原型也不同;因此是不同的。

两个声明对象比较的话,对内存中的数据也是两套,比较也是不同的。

你把这个比较理解为“是否同一个”而不是“是否相同”

0 回复 有任何疑惑可以回复我~
#1

HoSalt 提问者

非常感谢!
2015-12-30 回复 有任何疑惑可以回复我~

创建对象的时候,会先开辟一个内存空间,然后用一个变量指向这个内存空间,实际上这个变量的值是这个内存空间的引用,可以理解成一个地址,比如说:var a = {}; b = a; 那么a 和 b 引用的是同一个地址,因为{}的内存空间是同一个,所以你对a或者b进行数据修改,同时会影响两个的值,因为你实际上修改的是{}的值,本体都变了,引用当然会变,现在知道你问的引用时什么意思了吗,引用就是这个内存的地址

再说个具体的,比如说:成都市成华区双林路1号,这个地址是唯一的,你用无数个变量去接收这个地址,其实他就是同一个东西,当你修改其中一个变量,实际就是修改了这个唯一的东西,其他的变量值也就变了。

引申一下,所以为了避免这种情况,会用到克隆方法,至于怎么用,可以问度娘

3 回复 有任何疑惑可以回复我~
#1

桃太郎

那么可以理解为:对象的比较是引用的比较,引用指的是引用内存空间|引用内存地址。创建对象时,便创建一个内存空间|一个地址。两个对象虽然值一样,但引用的内存空间|地址不一样。那么他们便是不相等的|便是不一样的。
2016-09-24 回复 有任何疑惑可以回复我~
#2

chyco

var a = {x:1};b=a;a={x:2}; 后面修改a会对b造成影响?
2020-04-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript深入浅出
  • 参与学习       281102    人
  • 解答问题       1020    个

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

进入课程

对象的比较

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信