为什么我可以直接减去两个Date对象?

Dav*_*nal 5 javascript

我一直在想.显然,如果我这样做

const a = new Date();
Run Code Online (Sandbox Code Playgroud)

,a将保存对Date实例的引用.它有方法等.那么,为什么我可以使用简单的 - 运算符在两者之间减去两个日期?

const a = new Date();
const b = new Date();
console.log(a - b);
Run Code Online (Sandbox Code Playgroud)

我不是在这里减去两个物体吗?Date以某种方式"扩展"数字吗?而且,对于我自己,我可以定义这些运算符对我自己的类所做的事情,类似于C#如何通过运算符重载来完成它?

dev*_*ull 2

这是因为valueOf

它不仅仅适用于Date对象。valueOf您也可以在您的对象中使用。

const a = {}
a.valueOf = () => 100
console.log(a + 1) // 101
Run Code Online (Sandbox Code Playgroud)