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

Dam*_*mir 7 javascript dojo

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

Mar*_*ahn 9

你不能重载==,但==有一个隐式.toString()调用,所以无论什么.toString()返回都会让你有效地重载==(有点):

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

var x = new foo();
x == 42; // true
Run Code Online (Sandbox Code Playgroud)

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

  • 对于一个对象和一个原语,也许吧.虽然`valueOf`是你想要覆盖的.但不是两个对象.`new String('x')!= new String('x')`尽管两个对象的'toString`方法都返回相同的值. (5认同)

Que*_*tin 6

你不能.JavaScript不支持运算符重载.