new Date()
采用序数并返回一个Date
对象.
做了Date()
什么,为什么会给出不同的时间?
>>> new Date(1329429600000)
Date {Fri Feb 17 2012 00:00:00 GMT+0200 (????? Standard Time)}
>>> Date(1329429600000)
"Tue Mar 06 2012 15:29:58 GMT+0200 (Jerusalem Standard Time)"
Run Code Online (Sandbox Code Playgroud)
pim*_*vdb 103
从规格:
当
Date
作为函数而不是构造函数调用时,它返回表示当前时间(UTC)的String.
和:
当
Date
作为new
表达式的一部分调用时,它是一个构造函数:它初始化新创建的对象.
因此,new Date(...)
返回一个如此obj instanceof Date
为真的对象,而Date(...)
基本上返回相同的对象new Date().toString()
.
查看JavaScript日期以获取快速API参考和代码测试平台.您可以看到Date()
调用的函数new
不带任何参数,并始终返回string
当前日期/时间的表示.如果您将示例修改为:
console.log(Date());
console.log(Date(1329429600000));
Run Code Online (Sandbox Code Playgroud)
你会发现两者的结果是相同的(因为JavaScript会忽略传递给函数的额外参数):
Wed Apr 11 2012 09:58:11 GMT-0700 (PDT)
Wed Apr 11 2012 09:58:11 GMT-0700 (PDT)
Run Code Online (Sandbox Code Playgroud)
现在是 2017 年,我也有同样的问题。我在阅读后发现的答案是:
“执行显式类型转换的最简单方法是使用 Boolean() 、 Number() 、 String() 或 Object() 函数。我们已经将这些函数视为包装对象的构造函数。在没有 new 的情况下调用时运算符,但是,它们作为转换函数工作并执行类型转换..”
“核心 JavaScript 的内置类在 toString() 转换之前尝试 valueOf() 转换,但 Date 类除外,它执行 toString() 转换。”
因此,在没有 new 关键字的情况下调用 Date() 执行类型转换。并且由于 Date 是一个对象并且应该发生对象到原始对象,因此 date 对象默认调用 toString() (尽管 Date 也具有有意义的 valueOf() 方法)。
在“JavaScript: The Definitive Guide”一书中发现。留给刚开始学习 JS 的后代吧:)
归档时间: |
|
查看次数: |
15008 次 |
最近记录: |