为什么Chrome开发工具将日期__proto__显示为无效日期

Why does Chrome Dev Tool show a dates __proto__ as Invalid Date?

本文关键字:日期 显示 无效 proto Chrome 为什么 开发工具      更新时间:2023-09-26

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

var myDate = new Date(1331869050000);

"我仍然很好奇当它说无效日期时意味着什么"

这只是Date构造函数的prototype对象的toString值。


Date.prototype.toString(); // "Invalid Date"

如果你愿意,你可以覆盖它。。。

Date.prototype.toString = function() { return "I like turtles." };
var myDate = new Date(1331869050000);
myDate.__proto__; // I like turtles.

有点偏离主题,但__proto__在ECMAScript的下一个版本(代号Harmony)的当前工作草案中。

http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts

  • 添加了第B.3.1节,其中指定了__proto__功能

考虑到你制作了一个新的Date对象,我不会担心。原因是,如果你尝试这个代码:

var myDate = new Date(1331869050000);
alert(typeof myDate.getMonth != 'undefined')    //true

这将确定您继承的是Date对象方法,而实际上,Date是定义的。

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

日期实例的原型没有定义的值。只有实例具有值。您可以在实例化它时定义它。