【发布时间】:2013-06-27 17:11:52
【问题描述】:
这是面试前JavaScript在线测试中的问题之一:
function F(){};
var a = new F();
var b = new F();
Q:如何比较a == b和true? (例如console.log(a == b) // true)
我回答这是不可能的,因为a 和b 是F 的两个不同实例,并且在非原始比较引用的情况下,JS 中的相等比较。
但前段时间我读过 Axel Rauschmayer 的文章“JavaScript 中的假运算符重载”:http://www.2ality.com/2011/12/fake-operator-overloading.html — 我想知道在比较对象时是否存在假运算符重载的技巧?
【问题讨论】:
-
JSON.stringify(a) == JSON.stringify(b) -
@roasted,其实不是。在您提到的主题中,答案是关于如何以正确的方式比较对象。这是另一个案例。
-
@jsguff 抱歉,刚刚看了标题我得出了一个仓促的结论
-
轻微编辑
function F(){}; => function F(){}
标签: javascript object operator-overloading comparison-operators