Dies funktioniert in Chrome:
%Vor%Und ich bekomme den 5. Juni 2012. Ich habe auch einen Android-Browser ausprobiert und bekomme die gleichen Ergebnisse. Das Gleiche funktioniert jedoch nicht in Firefox oder Safari. Ich könnte sagen:
%Vor%Aber das wäre am 5. Juli 2012 so, wie es sollte, und das bekomme ich auch mit Chrome.
Meine Frage: ist der erste Beispielteil des ECMA-Standards? Ist Chrome nur ein Vorreiter und könnte ich erwarten, dass andere Browser es in Zukunft unterstützen? Oder ist es nur ein v8-ism, den ich für die Portabilität vermeiden sollte?
Ich habe versucht, Referenzen für diese spezielle Form des Date-Konstruktors zu finden, konnte aber keine finden.
Die ES5-Spezifikation enthält Einzelheiten zum new Date(value)
-Formular des Konstruktors Date
. Im Algorithmus zur Verarbeitung dieses Formulars wird value
in einen primitiven Wert konvertiert, indem die [[DefaultValue]]
interne Methode des Objekts.
Das Konvertieren eines Arrays in einen primitiven Wert erfolgt im Wesentlichen durch Konvertieren des Arrays in eine Zeichenfolge. Das Konvertieren eines Arrays in eine Zeichenfolge ( Array.prototype.toString
) entspricht im Grunde dem Aufruf von dateArray.join()
.
Daher sieht Ihr Aufruf des Konstruktors Date
folgendermaßen aus:
Wenn die Zeichenfolge von der Methode Date.parse
erkannt werden kann, werden Sie dies tun endet mit einer Date
-Instanz.
Diese Form des Date
-Konstruktors ist auch in MDN aufgelistet als new Date(dateString)
.
Firefox scheint zu versagen, wenn Sie ein Array übergeben, aber es ist erfolgreich, wenn Sie die Zeichenfolgendarstellung dieses Arrays übergeben. Ich würde sagen, dass das wahrscheinlich ein Firefox-Bug ist, aber ich interpretiere vielleicht die ES5-Spezifikation falsch.
Wie wäre es damit:
%Vor% Sie verwenden apply
, um die neue Funktion aufzurufen, die Sie mit bind
mit Array-Elementen als Argumente erstellt haben.
Quelle: Ссылка
Basiert auf Jures Antwort . Ich habe geklärt Sergios Frage in den Kommentaren, indem gezeigt wird, dass der null
tatsächlich der Umfang des Aufrufs ist.
Tags und Links javascript date