Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以在javascript中减去日期对象?是否存在任何形式的运算符重载?_Javascript_Date_Overloading_Operator Keyword - Fatal编程技术网

为什么可以在javascript中减去日期对象?是否存在任何形式的运算符重载?

为什么可以在javascript中减去日期对象?是否存在任何形式的运算符重载?,javascript,date,overloading,operator-keyword,Javascript,Date,Overloading,Operator Keyword,为什么下面的代码实际工作 代码 var firstDate = new Date(); // some time passing here var secondDate = new Date(); // Difference seems to contain difference in miliseconds. var difference = secondDate - firstDate; 我相信,我得到的是一个相当于secondDate.getTime()-firstDate.g

为什么下面的代码实际工作

代码

var firstDate = new Date();

// some time passing here

var secondDate = new Date();

// Difference seems to contain difference in miliseconds. 

var difference = secondDate - firstDate;

我相信,我得到的是一个相当于
secondDate.getTime()-firstDate.getTime()
。唯一的问题是,如何在后台进行毫秒数的转换?这是某种运算符重载吗?

运算符
-
将操作数转换为数字(例如检查
“12”-3
)。date对象定义了返回毫秒数的数值转换
.valueOf()

另请参见示例
+(新日期)

您可以为(几乎)任何对象提供自定义的valueOf()和/或toString()方法,以启用相同类型的功能。要知道JS Date()只是一些数字,带有一些奇特的原型方法,便于人类阅读和数学操作。