Menetapkan Date
variabel ke variabel lain akan menyalin referensi ke instance yang sama. Ini berarti bahwa mengubah yang satu akan mengubah yang lain.
Bagaimana saya bisa benar-benar mengkloning atau menyalin Date
contoh?
javascript
Árvíztűrő tükörfúrógép
sumber
sumber
Date.prototype.clone = function() { return new Date(this.getTime()); };
Yang kemudian bisa Anda gunakan sebagaicopiedDate = date.clone();
copiedDate = new Date(date)
Pendekatan bekerja di IE6 +. Di Firefox, dua opsi memiliki kecepatan yang sama.new Date(date)
sama dengannew Date(date.getTime())
, karena JS akan mencoba menelepondate.valueOf()
ketika memerlukan nomor, dandate.valueOf()
sama dengandate.getTime()
, referensi Date.valueOf Object.valueOfnew Date(date)
, gunakannew Date(date.getTime()
ataunew Date(date.valueOf)
sebaliknya karena cara pertama dapat menyebabkan perbedaan antara tanggal di setidaknya Firefox dan IE (bukan Chrome). Misalnya menggunakantoISOString()
pada kedua tanggal di Firefox menghasilkan"2015-04-21T04:56:42.000Z"
dan"2015-04-21T04:56:42.337Z"
.Ini adalah pendekatan terbersih
sumber
sumber
+
itu kepada siapa pun kecuali ahli JS.+
tandanya operator unaray di sini. Artinyanew Date( Number(orig))
. Lebih lanjut di sini: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Versi sederhana:
sumber
const cloneDate = d => new Date(d.getTime())
.Saya menemukan bahwa tugas sederhana ini juga berfungsi:
Tapi saya tidak tahu seberapa "aman" itu. Berhasil diuji di IE7 dan Chrome 19.
sumber
new Date(date)
, gunakannew Date(date.getTime()
ataunew Date(date.valueOf)
sebaliknya karena cara pertama dapat menyebabkan perbedaan antara tanggal di setidaknya Firefox dan IE (bukan Chrome). Misalnya menggunakantoISOString()
pada kedua tanggal di Firefox menghasilkan"2015-04-21T04:56:42.000Z"
dan"2015-04-21T04:56:42.337Z"
.