Perché Chrome Dev Tool mostra una data __proto__ come data non valida?


89

So che __proto__è deprecato (o non fa parte dello standard) e tutto il resto, ma sono ancora curioso di sapere cosa significhi quando si dice Data non valida quando guardo il __proto__valore di ..

var myDate = new Date(1331869050000);

Risposte:


87

"Sono ancora curioso di sapere cosa significhi quando si dice Data non valida"

Questo è semplicemente il toStringvalore prototypedell'oggetto della Datefunzione di costruzione.


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

Puoi sovrascriverlo se vuoi ...

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

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

Un po 'fuori tema, ma __proto__è nella bozza di lavoro corrente per la prossima versione di ECMAScript, nome in codice Harmony.

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

  • Aggiunta sezione B.3.1 con specifica __proto__funzionalità.

49
Sei vicino, ma manca ancora la parte "perché", il motivo è che l' Date.prototypeoggetto è un oggetto Date di per sé ma la sua [[PrimitiveValue]]proprietà interna lo è NaN(questa proprietà interna sugli oggetti data memorizza il valore temporale ), quindi non rappresenta effettivamente una data valida. Date.prototypeè un oggetto simile a new Date(NaN)...
Christian C. Salvadó

@CMS: ha senso. Sono buone informazioni. Sentiti libero di aggiungerlo alla risposta, se lo desideri.

4
quindi, in pratica, non ci sono errori e Chrome riflette solo toString () che non mostra il valore reale
Kat Lim Ruiz

3
Più uno per l'amore delle tartarughe
Guy

2

considerando che hai creato un nuovo oggetto Date, non me ne preoccuperei. Il motivo è che, se provi questo codice:

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

Ciò determinerà che si ereditano i metodi degli oggetti Date e che di fatto è definita la data.

Se desideri ulteriori indagini, dai un'occhiata a questo post.


0

Il prototipo di un'istanza di Date non ha un valore definito. Solo l'istanza ha un valore. Lo definisci quando lo installi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.