2016-04-28 68 views
0

我閱讀了關於equality comparison at MDN的文檔,但我對Javascript如何執行嚴格的平等檢查感興趣。Javascript如何判斷兩個對象是否相同?

還有這個規範:http://ecma-international.org/ecma-262/5.1/#sec-11.9.6,但我真的不明白它是如何適用於兩個對象。最後的聲明是我認爲的關鍵:

Return true if x and y refer to the same object. Otherwise, return false. 

但是,Javascript如何檢查它們是否引用同一個對象?

例如,假設一個對象Kitten具有name財產,我創建自己的名字進行初始化的兩個小貓:

var kittenA = new Kitten("kitty A"); 
var kittenB = new Kitten("kitty B"); 

什麼是JavaScript中使用,以確定該聲明如下

kittenA === kittenB 

將返回false?

+0

你可能感興趣的[如何解釋ECMAScript術語中的對象引用?](http://stackoverflow.com/q/23554770/1048572)。我不認爲它背後有很多東西。 – Bergi

+0

您的標題問題聽起來有點像重複[在JavaScript和=== ===之間的區別](http://stackoverflow.com/q/523643/1048572)。您應該編輯它以清楚地表明您的問題僅限於對象。 – Bergi

+0

它檢查引用是否相同(即'kittenA'和'kittenB'指向相同的基礎對象)。在這種情況下,引用指向不同的對象,這就是它返回false的原因。 – grovesNL

回答

3

kittenAkittenB都是object類型,使得殼體7適用:

  • 返回真,如果x和y指代相同的對象。否則,返回false。
  • 如何發動機知道他們是同一個對象的兩個引用?每個引擎如何準確實施引用會有所不同。它可能只是一個指向內存位置或列表中的索引(所有對象)的數字。

    相關問題