Почему Chrome Dev Tool показывает даты __proto__ как недопустимую дату?
Я знаю, что __proto__
устарел (или не является частью стандарта) и все это, но мне все еще интересно, что это значит, когда он говорит о недопустимой дате, когда я смотрю на значение __proto__
..
var myDate = new Date(1331869050000);
Ответы
Ответ 1
"Мне все еще интересно, что это значит, когда он говорит" Недействительная дата "
Это просто значение 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__
.
Ответ 2
учитывая, что вы создали новый объект Date, я бы не стал беспокоиться об этом. Причина в том, что если вы попробуете этот код:
var myDate = new Date(1331869050000);
alert(typeof myDate.getMonth != 'undefined') //true
Это определит, что вы наследуете методы объектов Date, и на самом деле определяется Date IS.
Если вы хотите продолжить расследование, посмотрите этот пост.
Ответ 3
Прототип экземпляра Date не имеет определенного значения. Значение имеет только экземпляр. Вы определяете его при его создании.