Javascript 为什么Chrome开发工具将日期(proto)显示为无效日期?

Javascript 为什么Chrome开发工具将日期(proto)显示为无效日期?,javascript,google-chrome-devtools,Javascript,Google Chrome Devtools,我知道\uuuuu proto\uuuuuu已经被弃用了(或者不是标准的一部分),但我仍然很好奇,当我看到的\uuuuu proto\uuuu值时,当它说无效日期是什么意思 var myDate = new Date(1331869050000); 考虑到你做了一个新的约会对象,我不会担心的。原因是,如果您尝试此代码: var myDate = new Date(1331869050000); alert(typeof myDate.getMonth != 'undefined') //

我知道
\uuuuu proto\uuuuuu
已经被弃用了(或者不是标准的一部分),但我仍然很好奇,当我看到的
\uuuuu proto\uuuu
值时,当它说无效日期是什么意思

var myDate = new Date(1331869050000);

考虑到你做了一个新的约会对象,我不会担心的。原因是,如果您尝试此代码:

var myDate = new Date(1331869050000);
alert(typeof myDate.getMonth != 'undefined')    //true
这将确定您继承的是Date对象方法,并且实际上定义了Date

如果你想做进一步的调查,可以看看这篇文章

“我仍然很好奇它说无效日期是什么意思”

这就是
Date
构造函数的
prototype
对象的
toString



如果您喜欢,可以覆盖它

Date.prototype.toString = function() { return "I like turtles." };

var myDate = new Date(1331869050000);
myDate.__proto__; // I like turtles.

有点离题了,但《代码》原版在ECMAScript下一版本的当前工作草案中,代号为Harmony

  • 增加了第B.3.1节,其中规定了
    \uuuuuuuuuuuuuuuuuuu
    功能

日期实例的原型没有定义的值。只有实例有一个值。当您实例化它时,您可以定义它。

您已经关闭了,但是“为什么”部分仍然缺失,原因是该对象本身是一个日期对象,但其
[[PrimitiveValue]]
内部属性是
NaN
(日期对象上的此内部属性存储了),因此它实际上并不表示有效的日期<代码>日期。原型是一个类似于
新日期(NaN)
…@CMS:的对象。这是个好消息。如果你愿意,可以随意添加到答案中。因此,基本上没有错误,Chrome只是反映了toString(),它没有显示真正的价值加上一个对海龟的爱
Date.prototype.toString = function() { return "I like turtles." };

var myDate = new Date(1331869050000);
myDate.__proto__; // I like turtles.