我知道__proto__
它已被弃用(或不是标准的一部分),但我仍然对它的__proto__
值表示“无效日期”表示好奇。
var myDate = new Date(1331869050000);
我知道__proto__
它已被弃用(或不是标准的一部分),但我仍然对它的__proto__
值表示“无效日期”表示好奇。
var myDate = new Date(1331869050000);
Answers:
“我仍然对表示无效日期的含义感到好奇”
那只是构造函数toString
的prototype
对象的值Date
。
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
- 添加了具有指定
__proto__
功能的B.3.1节。
考虑到您创建了一个新的Date对象,我不必担心。原因是,如果您尝试以下代码:
var myDate = new Date(1331869050000);
alert(typeof myDate.getMonth != 'undefined') //true
这将确定您是继承Date对象的方法,并且实际上是定义了Date。
如果您想进一步调查,请看这篇文章。
Date.prototype
对象本身就是Date对象,但是其[[PrimitiveValue]]
内部属性是NaN
(date对象上的此内部属性存储了time值),所以它不代表实际上是有效日期。Date.prototype
是与new Date(NaN)
... 类似的物体