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

后端 未结 3 879
情歌与酒
情歌与酒 2020-12-02 16:33

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 th

相关标签:
3条回答
  • 2020-12-02 16:47

    The prototype of a Date instance has no defined value. Only the instance has a value. You define it when you instantiate it.

    0 讨论(0)
  • 2020-12-02 16:54

    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.

    0 讨论(0)
  • 2020-12-02 17:00

    "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.
    0 讨论(0)
提交回复
热议问题