Я знаю, что __proto__
это устарело (или не является частью стандарта) и все такое, но мне все еще любопытно, что это значит, когда он говорит о недопустимой дате, когда я смотрю на __proto__
значение ..
var myDate = new Date(1331869050000);
Я знаю, что __proto__
это устарело (или не является частью стандарта) и все такое, но мне все еще любопытно, что это значит, когда он говорит о недопустимой дате, когда я смотрю на __proto__
значение ..
var myDate = new Date(1331869050000);
Ответы:
"Мне до сих пор любопытно, что означает недопустимая дата"
Это просто 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
- Добавлен раздел B.3.1 с указанием
__proto__
функции.
учитывая, что вы создали новый объект Date, я бы не стал об этом беспокоиться. Причина в том, что если вы попробуете этот код:
var myDate = new Date(1331869050000);
alert(typeof myDate.getMonth != 'undefined') //true
Это определит, что вы наследуете методы объектов Date и что фактически определено Date IS.
Если вы хотите продолжить расследование, прочтите этот пост.
Date.prototype
объект сам по себе является объектом Date, но его[[PrimitiveValue]]
внутреннее свойствоNaN
(это внутреннее свойство объектов даты хранит значение времени ), поэтому оно не представляет на самом деле действительная дата.Date.prototype
это объект, похожий наnew Date(NaN)
...