Javascript如何判断两个对象是否相同?

How does Javascript determine whether two objects are the same?

我阅读了关于 equality comparison at MDN 的文档,但我对 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

会return假吗?

kittenAkittenB 都是 object 类型,所以情况 7 适用:

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

引擎如何知道它们是对同一对象的两个引用?引用的具体实现方式因引擎而异。它可能只是一个指向内存位置的数字或(所有对象的)列表中的索引。