js中对象的比较:只有地址相同才相等

最近和朋友进行了长达5分钟的学术交流,突然间对对象的比较有了清晰的理解,所以整理了一下恍然大悟的一些理解,分享粗来。


提问:

var a = new Object();
var b = new Object();
a.name = "mm";
b.name = "mm";
var c = a;
var d = a;

1、a == b
2、a == c
3、a == d
4、b == c
5、b == d
这5个表达式的结果是什么?为什么?

这个问题在这次交流之前,我一直都是模棱两可的,直觉告诉我 a == b 是false,但是为什么是,说不出来,只是凭借着女孩子那虚无缥缈的第六感而下的结论。这5个表达式的答案是:false、true、true、false、false。接下来,来分析一下。

a与b都是实例化出来的对象,并且它们拥有的属性一致,属性值也相等,但是 a == b 确实 false,是因为a、b创建出来的时候的地址是不一样的,对象相比较等于对象的地址相比较,但一旦对象的地址创建了,就无法更改,无论是赋值给另一个还是其他的方法都无法更改。这么讲解好像很抽象,所以画了个图来帮助理解,加深印象。

这里写图片描述

希望可以给和之前的我有一样困惑的小伙伴们一点启发!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值