Я знаю __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)
...