覆盖JavaScript中比较运算符的默认行为
我有一个自定义的Javascript类(使用John Resig的简单Javascript继承创建)。我希望能够使用
==
,<
,>
,>=
和<=
符号来比较此类的两个实例。
如何覆盖自定义类的比较器?
没有找到相关结果
已邀请:
3 个回复
膏焦凑
我今天在工作中考虑了这个问题,并且有另一种方法可以利用标准比较运算符但是有自定义对象比较。诀窍是在对象上有一个表示可比状态的属性(getter)。这将要求在给定相同的可比较属性的情况下,对象的所有实例都评估为相同的数值。举个例子,让我们来谈谈:
然后当你设置向量时:
这当然只能处理可以分解为值的简单数值表达式的对象,但好处是获得基本效果的实现代码非常低,你甚至可以做到这一点。 object本身是一个函数,它返回它的组成部分的数字表达式。
现在,您可以通过简单的数字比较获得对象的所有好处,甚至有点简洁。
稍惮
因此,每当我需要一个特殊的JavaScript对象类型来覆盖比较时,我只需将valueOf添加到原型中。它对于原始类型也很有用,因为valueOf只返回值。 请注意空值。
漂截嘘