【发布时间】:2016-04-23 05:22:44
【问题描述】:
我对 javascript 中的 Date 关键字有很多困惑。 MDN article 在它的第二行中声明 Date 是一个对象:
Date对象基于...
但是typeof Date 返回"function"。第二件事是Date()——带右括号——应该是一个函数,因为foo()类型的任何东西都是一个函数,根据Douglas Crockford的书的语法一章。令人惊讶的是,typeof Date() 返回"string"。现在如果Date() 不是函数,那么new Date() 是什么?字符串构造函数?正是我的问题是:
- 什么是
Date?它是如何在 javascript 本身中定义的? - 什么是
Date()?它与Date有何不同?它是如何在 javascript 本身中定义的?为什么不是函数? - 什么是
new Date()?如果Date()是一个字符串,那么它如何充当构造函数? - 如果我们可以实例化
new Date(),例如像new Date("October 13, 2014 11:13:00")那么我们为什么不能像Date("October 13, 2014 11:13:00")一样实例化原始函数Date()?
【问题讨论】:
-
“
Dateobjects”指的是Date构造函数的实例对象。Date是一个函数,Date()是函数调用的result,是一个字符串。Date和Date()是不同的东西。 -
你搜索过 Stack Overflow 吗? stackoverflow.com/questions/9584719/… typeof Date 返回 "function" 的事实应该很明显: Date is 一个您可以调用的函数,既可以作为函数(它会返回一个字符串)也可以作为构造函数, 以新为前缀。如您所述,在第二种情况下,它将按预期运行,构建一个新的 Date 对象。
-
typeof Date()是string..当然.. 这是Date().. 返回的typeof值。Date将保存函数定义。这就是它的原因function.. 类型的function foo()是一个函数定义.. 并且foo()正在调用该函数.. 它可以返回任何原始类型的数据.. new 运算符创建用户定义的实例对象类型或具有构造函数的内置对象类型之一 -
写这个:
function test() { return ''; } console.log(typeof test()); var t = new test(); console.log(typeof t); -
@RayonDabre 如果我没听错,这意味着
typeof返回函数的return值的type。
标签: javascript function date datetime object