Moment: Aktifkan semua fungsi non-mutasi setelah Object.freeze()

Dibuat pada 14 Jan 2016  ·  4Komentar  ·  Sumber: moment/moment

Memisahkan permintaan @kruncher dari diskusi di #1754:

Saya telah menggunakan Object.freeze pada contoh momen dan ini secara umum telah mencapai apa yang saya butuhkan; kecuali saya baru saja menemukan bahwa yang berikut ini gagal:

let now = Object.freeze(moment());
if (now.isSameOrBefore(anotherTime)) { // throws exception
}

Pengecualian:

TypeError: Can't add property _isValid, object is not extensible
 at valid__isValid (C:\git\quick-test\node_modules\moment\moment.js:93:24)
 at Moment.moment_valid__isValid [as isValid] (C:\git\quick-test\node_modules\moment\moment.js:2195:16)
 at Moment.isSame (C:\git\quick-test\node_modules\moment\moment.js:1945:44)
 at Moment.isSameOrBefore (C:\git\quick-test\node_modules\moment\moment.js:1962:21)

Bisakah ini diperbaiki agar Object.freeze dapat digunakan saat diinginkan?

Help Wanted

Semua 4 komentar

const moment = require('moment')
const today = Object.freeze(moment()); 
today.toString()
   => 'Tue May 02 2017 10:04:52 GMT-0400'
today.add(1, 'day')
   => moment("2017-05-03T10:04:52.889")
today.toString()
  => 'Wed May 03 2017 10:04:52 GMT-0400'

Mungkin saya melewatkan sesuatu tetapi Object.freeze sepertinya tidak berfungsi sama sekali untuk saya pada rilis terbaru. Saya tahu bahwa ada dorongan besar untuk kekekalan di 3.x tetapi sementara itu apakah ada keandalan di Object.freeze? /

Versi simpul: 6.10 (~lts)
Versi momen: 2.18.1

@butterflyhug - Saya tidak dapat mereproduksi TypeError, bahkan dalam mode ketat.

@SeanDunford - ini sepertinya aneh. Saya tidak tahu apakah Anda bisa mempercayai kekekalan di 2.x.

Saya akan senang membantu memahami mengapa objek ini tampak bisa berubah, bahkan jika beku atau deepFrozen .

@marwahaha - Kami telah beralih ke Luxon sekarang. Saat itu kami belum siap untuk menggunakan 3.x.

Ok, saya akan menutup dan menganggap Object.freeze tidak bekerja untuk moment s di 2.x.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat