请看下面的代码:
但是这会打印出 "NaN",因为在日期对象上调用toString方法返回的是一个格式化后的字符串。
那么,是什么魔力使得这种算法成为可能?它能在自定义对象上实现吗?
考虑以下代码:
var a = new Date(someDateString);
var b = new Date(someOtherDateString);
console.log(b - a); // Outputs for example 3572, number of millisecs between the dates
为什么这个代码能工作?因为它是对两个对象进行算术运算。它看起来很像C++和其他语言中的操作符重载,但据我所知,在ECMAScript 7之前,JavaScript不支持。
人们会认为JS引擎会将其转换为类似以下内容:
console.log(b.toString() - a.toString());
但是这会打印出 "NaN",因为在日期对象上调用toString方法返回的是一个格式化后的字符串。
Mon Mar 23 2015 13:21:33 GMT+0100 (CET)
那么,是什么魔力使得这种算法成为可能?它能在自定义对象上实现吗?
'2015-02-10' - '2014-10-12'
的结果会是什么样子? - RobG