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創建出來的時候的地址是不一樣的,對象相比較等於對象的地址相比較,但一旦對象的地址創建了,就無法更改,無論是賦值給另一個還是其他的方法都無法更改。這麼講解好像很抽象,所以畫了個圖來幫助理解,加深印象。

這裏寫圖片描述

希望可以給和之前的我有一樣困惑的小夥伴們一點啓發!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章