web-dev-qa-db-fra.com

Pourquoi Chrome Dev Tool affiche une date __proto__ comme date non valide?

Je sais __proto__ est obsolète (ou ne fait pas partie de la norme) et tout cela, mais je suis toujours curieux de savoir ce que cela signifie quand il dit Date invalide quand je regarde le __proto__ valeur de..

var myDate = new Date(1331869050000);
89
Shane Courtrille

"Je suis toujours curieux de savoir ce que cela signifie quand il dit Date invalide"

Il s'agit simplement de la valeur toString de l'objet prototype de la fonction constructeur Date.


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

Vous pouvez le remplacer si vous le souhaitez ...

Date.prototype.toString = function() { return "I like turtles." };

var myDate = new Date(1331869050000);
myDate.__proto__; // I like turtles.

Un peu hors sujet, mais __proto__ est dans le projet de travail actuel pour la prochaine version d'ECMAScript, nom de code Harmony.

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

  • Ajout de la section B.3.1 avec spécifie __proto__ fonctionnalité.
87
user1106925

étant donné que vous avez créé un nouvel objet Date, je ne m'en inquiéterais pas. La raison étant, si vous essayez ce code:

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

Cela déterminera que vous héritez des méthodes des objets Date et qu'en fait, Date IS défini.

Si vous souhaitez une enquête plus approfondie, jetez un œil à this post.

2
Ben Sewards

Le prototype d'une instance de Date n'a pas de valeur définie. Seule l'instance a une valeur. Vous le définissez lorsque vous l'instanciez.

0
dmvianna