2016-04-28 115 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。
  • 如何发动机知道他们是同一个对象的两个引用?每个引擎如何准确实施引用会有所不同。它可能只是一个指向内存位置或列表中的索引(所有对象)的数字。

    相关问题