【发布时间】:2016-11-30 14:32:40
【问题描述】:
在 Python 中,可以通过为您的类定义 __eq__ 方法来覆盖 == 所做的事情。
是否可以在 Javascript 中做类似的事情?如果是这样,你是怎么做的?
我的理解是,默认情况下(可能总是,如果你不能覆盖它),当你执行== 时,Javascript 只会检查两个对象是否位于同一地址。如何直接获取地址?
我之所以问这一切,是因为我正在尝试调试一些早已不复存在的人编写的代码。据我所知,两个对象是相同的,但 == 正在返回 false。我试图找出原因...我想知道 == 是否在某个地方被覆盖(但它是一个很大的代码库,我不知道要搜索什么)或者对象是否被复制,所以据我所知,尽管它们是相同的,但它们存在于不同的地址。知道如何获取地址将有助于确认该理论并引导我找出问题所在。
【问题讨论】:
-
无法覆盖 JavaScript 中的运算符。如果您在两个对象上使用
==或===,它将返回true如果它们是相同的引用。 -
对象看起来相同,但实际上不是内存中的同一个对象。仔细检查这一点的一种方法是添加一个具有值的属性,并查看它是否出现在另一个上。如果不是,它们是不同的对象。
标签: javascript equality comparison-operators