你能覆盖 Javascript 中的 == 吗?
Can you override what == does in Javascript?
在 Python 中,可以通过为 class.
定义一个 __eq__
方法来覆盖 ==
所做的事情
是否可以在 Javascript 中做类似的事情?如果是,你是怎么做到的?
我的理解是,默认情况下(如果您无法覆盖它,可能总是如此),Javascript 只是在您执行 [=11] 时检查两个对象是否位于同一地址=].如何直接获取地址?
我问这一切是因为我正在尝试调试一些早已不复存在的人编写的代码。据我所知,两个对象是相同的,但 ==
返回 false
。我试图找出原因......我想知道是否 ==
在某个地方被覆盖了(但它是一个很大的代码库,我不知道要搜索什么)或者对象是否被复制了,因此尽管据我所知它们是相同的,但它们存在于不同的地址。知道如何获取地址将有助于确认该理论并为我提供解决问题的线索。
不,无法直接覆盖 JavaScript 中的任何运算符。
通常不会。 JS 不允许运算符重载或运算符作为方法。
有些运算符在内部调用 toString
或 valueOf
,您 可以 自己覆盖 类,从而影响行为。
在 Python 中,可以通过为 class.
定义一个__eq__
方法来覆盖 ==
所做的事情
是否可以在 Javascript 中做类似的事情?如果是,你是怎么做到的?
我的理解是,默认情况下(如果您无法覆盖它,可能总是如此),Javascript 只是在您执行 [=11] 时检查两个对象是否位于同一地址=].如何直接获取地址?
我问这一切是因为我正在尝试调试一些早已不复存在的人编写的代码。据我所知,两个对象是相同的,但 ==
返回 false
。我试图找出原因......我想知道是否 ==
在某个地方被覆盖了(但它是一个很大的代码库,我不知道要搜索什么)或者对象是否被复制了,因此尽管据我所知它们是相同的,但它们存在于不同的地址。知道如何获取地址将有助于确认该理论并为我提供解决问题的线索。
不,无法直接覆盖 JavaScript 中的任何运算符。
通常不会。 JS 不允许运算符重载或运算符作为方法。
有些运算符在内部调用 toString
或 valueOf
,您 可以 自己覆盖 类,从而影响行为。