I have created new objects with Dojo.declare. How to overload operator == for objects ?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You can't overload ==
, but ==
has an implicit .toString()
call, so whatever .toString()
returns will allow you to effectively overload ==
(kinda):
function foo(){}
foo.prototype.toString = function(){ return 42; }
var x = new foo();
x == 42; // true
As for how to do this in Dojo, I don't use Dojo, sorry, but the gist is that you get a reference to whatever object is creates and add thatObject.prototype.toString
as in my example.
回答2:
You can't. JavaScript doesn't support operator overloading.
回答3:
You can't in Java/ECMAscript. You can only overload operators using ExtendScript from Adobe. See this example. Also see this blog entry (pro), or this (contra).