首页 > 解决方案 > javascript: `Date()` 和 `new Date()`

问题描述

为什么会Date()给出new Date()不同的结果?如何Date()实施以及为什么要这样实施?

typeof(Date())
>>  "string"
typeof(new Date())
>>  "object"

标签: javascriptdate

解决方案


Date() 是如何实现的?

函数有一些方法可以确定它是否被调用new,一种是检查值,this另一种是new.target(伪代码):

 function Date() {
   if(!(this instanceof Date)) {
     return "string";
  }
}

但是内部对象通常不是用 JS 本身编写的,而是用运行 JS 的语言编写的。

为什么它是这样实现的?

你永远不会得到答案。没有人做出错误的设计决定。


推荐阅读