我一直在想.显然,如果我这样做
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#如何通过运算符重载来完成它?
这是因为valueOf。
它不仅仅适用于Date对象。valueOf您也可以在您的对象中使用。
const a = {}
a.valueOf = () => 100
console.log(a + 1) // 101Run Code Online (Sandbox Code Playgroud)