Я знаю __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 зберігає значення часу ), тому вона не представляє фактично дійсна дата.Date.prototypeє об’єктом, подібним доnew Date(NaN)...