我有以下的例子:
class MyClass {
constructor(name) {
this.name = name;
}
toString() {
return this.name;
}
valueOf() {
return this.name;
}
}
const list = [new MyClass("b"), new MyClass("ä")];
list.sort();
console.log(list.join());
list.sort(new Intl.Collator('de').compare);
console.log(list.join());
在这里,Collator
需要得到正确的排序顺序,但是我想要去掉它,并且我想要能够比较MyClass
的实例与简单的myClass1 < myClass2
。从理论上讲,这应该可以通过更改valueOf
函数来实现。
我现在的问题是,有没有任何JavaScript内置的方法来获得"locale"字符串的值(类似于Intl.Collator
或localeCompare
),我可以在我的valueOf
函数中返回以获得正确的顺序?
不,没有这样的信息。基本上,除非您直接(如Intl.Collator
)或间接(如localeCompare
)将Intl与指定的区域设置一起使用,否则您将根据浏览器实现的字符串比较代码点,这很可能是通过UTF-16代码点。