2012-03-15 6 views

risposta

86

"Sono ancora curioso di sapere che cosa significa quando si dice Invalid Data"

Questo è semplicemente il valore toString del prototype oggetto della funzione Date costruttore.


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

È possibile ignorare che, se volete ...

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

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

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

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

  • Aggiunta la sezione B.3.1 con specifica __proto__ funzione.
+49

Sei vicino, ma la parte "perché" è ancora mancante, il motivo è che l'oggetto ['Date.prototype'] (http://es5.github.com/#x15.9.5) è un * Data oggetto da solo * ma la proprietà interna di '[[PrimitiveValue]]' è 'NaN' (questa proprietà interna sugli oggetti data memorizza il [valore temporale] (http://es5.github.com/#x15.9.1.1)), quindi non rappresenta in realtà una data valida. 'Date.prototype' è un oggetto simile a' new Date (NaN) '... – CMS

+0

@CMS: ha senso. Questa è una buona informazione. Sentiti libero di aggiungerlo alla risposta, se lo desideri. –

+4

quindi, in pratica, non ci sono errori e Chrome sta solo riflettendo il toString() che non mostra il vero valore –

2

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

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

Questo determinerà che si sta ereditando il Data oggetti metodi e che in realtà, data è definito.

Se si desidera ulteriori indagini, dare un'occhiata al post this.

0

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

Problemi correlati