Durch Zuweisen einer Date
Variablen zu einer anderen wird der Verweis auf dieselbe Instanz kopiert. Dies bedeutet, dass das Ändern des einen das andere ändert.
Wie kann ich eine Date
Instanz tatsächlich klonen oder kopieren ?
javascript
Árvíztűrő tükörfúrógép
quelle
quelle
Date.prototype.clone = function() { return new Date(this.getTime()); };
Sie dann alscopiedDate = date.clone();
copiedDate = new Date(date)
Ansatz funktioniert in IE6 +. In Firefox haben beide Optionen die gleiche Geschwindigkeit.new Date(date)
das gleiche wienew Date(date.getTime())
, weil JS versuchen wird anzurufen,date.valueOf()
wenn es eine Nummer benötigt, unddate.valueOf()
das gleiche ist wie diedate.getTime()
Referenz Date.valueOf Object.valueOfnew Date(date)
, verwendennew Date(date.getTime()
odernew Date(date.valueOf)
stattdessen, da der erste Weg zu Unterschieden zwischen den Daten in mindestens Firefox und IE (nicht Chrome) führen kann. Wenn Sie beispielsweisetoISOString()
an beiden Daten in Firefox verwenden, werden"2015-04-21T04:56:42.000Z"
und generiert"2015-04-21T04:56:42.337Z"
.Dies ist der sauberste Ansatz
quelle
quelle
+
jedem außer JS-Experten erklären, was diese Magie tut.+
Zeichen ist unaray Betreiber hier. Es bedeutetnew Date( Number(orig))
. Mehr hier: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Vereinfachte Version:
quelle
const cloneDate = d => new Date(d.getTime())
.Ich fand heraus, dass diese einfache Zuweisung auch funktioniert:
Aber ich weiß nicht, wie "sicher" es ist. Erfolgreich in IE7 und Chrome 19 getestet.
quelle
new Date(date)
, verwendennew Date(date.getTime()
odernew Date(date.valueOf)
stattdessen, da der erste Weg zu Unterschieden zwischen den Daten in mindestens Firefox und IE (nicht Chrome) führen kann. Wenn Sie beispielsweisetoISOString()
an beiden Daten in Firefox verwenden, werden"2015-04-21T04:56:42.000Z"
und generiert"2015-04-21T04:56:42.337Z"
.