如何在 javascript 中对自定义对象执行小于/大于比较
How to perform less than/greater than comparisons on custom objects in javascript
我有一个自定义类,它有几个成员。我需要将它们相互比较。JavaScript让我写:
var a = new MyType(1);
var b = new MyType(2);
if (a < b) { ...
但我不明白逻辑比较的行为。有人可以解释上面代码中<比较的语义吗?有没有办法控制发生的事情,以便我能够获得正确的行为?我知道我可以为这个类写一个比较方法,但是由于javascript让我写它,我想知道它认为它在做什么。>
谢谢。
您需要
定义一个返回可用于比较的基元的.valueOf
方法:
function MyType( value ){
this.value = value;
}
MyType.prototype.valueOf = function() {
return this.value;
};
var a = new MyType(3),
b = new MyType(5);
a < b
true
a > b
false
a >= b
false
b < a
false
b > a
true
如果未定义,则字符串"[object Object]"
用于比较:
"[object Object]" < "[object Object]"
false
"[object Object]" > "[object Object]"
false
"[object Object]" >= "[object Object]"
true
"[object Object]" <= "[object Object]"
true
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery:代码在rails中的页面加载时未执行
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- JavaScript动画从不执行
- 如果两个元素之间的距离小于 X,则执行 Y
- 如何在 javascript 中对自定义对象执行小于/大于比较