Почему 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 не имеет определенного значения. Значение имеет только экземпляр. Вы определяете его при его создании.