如何在 javascript 中对自定义对象执行小于/大于比较

How to perform less than/greater than comparisons on custom objects in javascript

本文关键字:小于 执行 大于 比较 对象 自定义 javascript      更新时间:2023-09-26

我有一个自定义类,它有几个成员。我需要将它们相互比较。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