【发布时间】:2011-04-11 08:39:09
【问题描述】:
我已经使用 Dojo.declare 创建了新对象。如何为对象重载运算符 == ?
【问题讨论】:
标签: javascript dojo
我已经使用 Dojo.declare 创建了新对象。如何为对象重载运算符 == ?
【问题讨论】:
标签: javascript dojo
你不能重载==,但== 有一个隐式的.toString() 调用,所以无论.toString() 返回什么都可以让你有效地重载==(有点):
function foo(){}
foo.prototype.toString = function(){ return 42; }
var x = new foo();
x == 42; // true
至于如何在 Dojo 中执行此操作,抱歉,我不使用 Dojo,但要点是您可以引用所创建的任何对象并添加 thatObject.prototype.toString,如我的示例所示。
【讨论】:
valueOf 是您想要覆盖的。但不适用于两个对象。 new String('x') != new String('x') 尽管两个对象的 toString 方法返回相同的值。
valueOfimplementation。
你不能。 JavaScript 不支持运算符重载。
【讨论】:
你不能在 Javascript/ECMAscript 中。您可以在 Adobe 的 ExtendScript 中重载运算符。见this example。另请参阅此blog entry(专业版)或this(反对版)。
【讨论】: