【发布时间】:2016-04-28 16:26:46
【问题描述】:
我阅读了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 如何检查它们是否引用同一个对象?
例如,给定一个具有name 属性的对象Kitten,我创建了两个用它们的名字初始化的小猫:
var kittenA = new Kitten("kitty A");
var kittenB = new Kitten("kitty B");
Javascript 使用什么来确定以下语句
kittenA === kittenB
会返回假吗?
【问题讨论】:
-
您可能对How to explain object references in ECMAScript terms? 感兴趣。我认为这背后没有太多其他内容。
-
您的标题问题听起来有点像重复的Difference between == and === in JavaScript。您应该对其进行编辑,以明确您的问题仅限于对象。
-
检查引用是否相同(即
kittenA和kittenB都指向同一个底层对象)。在这种情况下,引用指向不同的对象,这就是它返回 false 的原因。 -
@Bergi 我已经更新了标题。我也查看了答案,但我不确定哪一部分可以帮助我(或某人)理解 javascript 如何检查对象的引用。
-
@MxyL:V8 和 Gecko 都是开源的,所以是的,如果您有兴趣可以查一下。对象引用通常只是一个(可能已标记)指向某个内存块的指针,该内存块包含对象的数据和关于该对象的数据。
标签: javascript comparison equality