如何重载JavaScript对象的运算符相等性

时间:2011-04-11 08:39:10

标签: javascript dojo

我用Dojo.declare创建了新对象。如何重载operator == for objects?

3 个答案:

答案 0 :(得分:9)

您无法重载==,但==有隐式.toString()调用,因此无论.toString()返回什么,都可以让您有效地重载==(有点):

function foo(){}
foo.prototype.toString = function(){ return 42; }

var x = new foo();
x == 42; // true

至于如何在Dojo中执行此操作,我不使用Dojo,抱歉,但要点是您获得对创建的任何对象的引用并添加thatObject.prototype.toString,如我的示例所示。

答案 1 :(得分:6)

你做不到。 JavaScript不支持运算符重载。

答案 2 :(得分:3)

你不能在Java / ECMAscript中。您只能使用Adobe的ExtendScript重载运算符。见this example。另请参阅此blog entry(专业版)或this(反对)。