Chr*_*isW 3 javascript datetime operator-overloading operators
这个答案说,
该Date对象会做你想要的东西-构造一个每个日期,然后用它们进行比较
>
,<
,<=
或>=
。
我没有看到引用页面上提到的这个功能。
>
, <
,<=
或>=
运算符的这种行为是如何实现的?我的意思是,它是否定义在 上Date.prototype
,是否因为定义了一些隐式转换(例如从对象到数字或字符串)而发生,它是否是添加到 Javascript 语言解释器/运行时的 Date 对象的特殊情况,或者是什么?每当您使用通常需要数字(加法、减法、更大/更低比较)的对象时,都会调用valueOf方法将对象转换为原始类型:
{ valueOf: () => 2 }.valueOf() // 2
//or not explicitly called:
+ { valueOf: () => 2 } // 2
//using the compare operator:
{ valueOf: () => 2 } < { valueOf: ()=>3 } //true as 2 < 3
Run Code Online (Sandbox Code Playgroud)
因此,当您比较日期时,也会发生这种情况。由于Date.prototype.valueOf方法返回自 1970 年以来的毫秒数,您可以使用它来比较两个日期...
new Date().valueOf();
//or
+new Date();
//or
new Date() < new Date();
Run Code Online (Sandbox Code Playgroud)