Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does Chrome Dev Tool show a dates __proto__ as Invalid Date?

I know __proto__ is deprecated (or not part of the standard) and all that but I'm still curious as to what it means when it says Invalid Date when I look at the __proto__ value of..

var myDate = new Date(1331869050000); 
like image 410
Shane Courtrille Avatar asked Mar 15 '12 17:03

Shane Courtrille


2 Answers

"I'm still curious as to what it means when it says Invalid Date"

That's simply the toString value of the prototype object of the Date constructor function.


Date.prototype.toString(); // "Invalid Date" 

You can override it if you like...

Date.prototype.toString = function() { return "I like turtles." };  var myDate = new Date(1331869050000); myDate.__proto__; // I like turtles. 

A little off topic, but __proto__ is in the current working draft for the next version of ECMAScript, codename Harmony.

http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts

  • Added section B.3.1 with specifies __proto__ feature.
like image 107
2 revsuser1106925 Avatar answered Oct 02 '22 15:10

2 revsuser1106925


considering you made a new Date object, I wouldn't worry about it. The reason being, if you try this code:

var myDate = new Date(1331869050000); alert(typeof myDate.getMonth != 'undefined')    //true 

This will determine that you are inheriting the Date objects methods and that in fact, Date IS defined.

If you would like further investigation, take a look at this post.

like image 26
Ben Sewards Avatar answered Oct 02 '22 14:10

Ben Sewards