Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何重载JavaScript对象的运算符相等性_Javascript_Dojo - Fatal编程技术网

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

如何重载JavaScript对象的运算符相等性,javascript,dojo,Javascript,Dojo,我已经用Dojo.declare创建了新对象。如何重载对象的运算符==?您不能。JavaScript不支持运算符重载。您不能重载=,但是=有一个隐式的.toString()调用,所以无论.toString()返回什么,都将允许您有效地重载=(有点): 至于如何在Dojo中实现这一点,对不起,我不使用Dojo,但要点是您可以获得对所创建对象的引用,并添加thatObject.prototype.toString,如我的示例所示。您不能在Javascript/ECMAscript中使用。您可以从Ad

我已经用Dojo.declare创建了新对象。如何重载对象的运算符==?

您不能。JavaScript不支持运算符重载。

您不能重载
=
,但是
=
有一个隐式的
.toString()
调用,所以无论
.toString()
返回什么,都将允许您有效地重载
=
(有点):


至于如何在Dojo中实现这一点,对不起,我不使用Dojo,但要点是您可以获得对所创建对象的引用,并添加
thatObject.prototype.toString
,如我的示例所示。

您不能在Javascript/ECMAscript中使用。您可以从Adobe中重载ExtendScript中的运算符。看见另请参见此(pro)或(contra)。

这似乎仅适用于ActionScript。@Joachim Sauer:wtf?我就是这么回答的!添加一些链接以显示关于ECMAscript运算符重载的讨论。对于对象和原语,可能是这样。尽管
valueOf
是您想要覆盖的内容。但不适用于两个对象<代码>新字符串('x')!=新字符串('x'),尽管两个对象的
toString
方法返回相同的值。@Mike-meh。你说得对。对象相等性不适用,因为只有对内存地址的检查…即使是对象和原语比较,优先级也将被赋予
valueOf
implementation。此处可能重复:
function foo(){}
foo.prototype.toString = function(){ return 42; }

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