¿Por qué Chrome Dev Tool muestra una fecha __proto__ como Fecha no válida?

89

Sé que __proto__está en desuso (o no es parte del estándar) y todo eso, pero todavía tengo curiosidad por saber qué significa cuando dice Fecha no válida cuando miro el __proto__valor de ..

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

Respuestas:

87

"Todavía tengo curiosidad por saber qué significa cuando dice Fecha no válida"

Ese es simplemente el toStringvalor del prototypeobjeto de la Datefunción constructora.


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

Puede anularlo si lo desea ...

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

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

Un poco fuera de tema, pero __proto__está en el borrador de trabajo actual para la próxima versión de ECMAScript, nombre en clave Harmony.

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

  • Se agregó la sección B.3.1 con __proto__características específicas .
user1106925
fuente
49
Estás cerca, pero la parte "por qué" todavía falta, la razón es que el Date.prototypeobjeto es un objeto Date por sí mismo, pero su [[PrimitiveValue]]propiedad interna lo es NaN(esta propiedad interna en los objetos de fecha almacena el valor de la hora ), por lo que no representa en realidad una fecha válida. Date.prototypees un objeto similar a new Date(NaN)...
Christian C. Salvadó
@CMS: Tiene sentido. Esa es buena información. No dude en agregarlo a la respuesta si lo desea.
4
entonces, básicamente, no hay ningún error y Chrome solo está reflejando el toString () que no muestra el valor real
Kat Lim Ruiz
3
Más uno por el amor de las tortugas
Guy
2

considerando que hiciste un nuevo objeto Date, no me preocuparía por eso. La razón es, si prueba este código:

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

Esto determinará que está heredando los métodos de objetos de fecha y que, de hecho, la fecha está definida.

Si desea realizar más investigaciones, eche un vistazo a esta publicación.

Ben Sewards
fuente
0

El prototipo de una instancia de Date no tiene un valor definido. Solo la instancia tiene un valor. Lo define cuando crea una instancia.

dmvianna
fuente