Separando la solicitud de @kruncher de la discusión sobre # 1754:
He estado usando Object.freeze en instancias momentáneas y esto generalmente ha logrado lo que necesitaba; excepto que acabo de descubrir que lo siguiente falla:
let now = Object.freeze(moment()); if (now.isSameOrBefore(anotherTime)) { // throws exception }
La excepción:
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)
¿Se puede arreglar esto para que Object.freeze pueda usarse cuando se desee?
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'
Tal vez me esté perdiendo algo, pero Object.freeze
no parece funcionar para mí en la última versión. Sé que hay un gran impulso para la inmutabilidad en 3.x
pero, mientras tanto, ¿hay confiabilidad en Object.freeze? /
Versión de nodo: 6.10 (~ lts)
Versión de momento: 2.18.1
@butterflyhug : no puedo reproducir TypeError, incluso en modo estricto.
@SeanDunford : esto parece extraño. No sé si puedes confiar en la inmutabilidad en 2.x.
Me encantaría ayudar a comprender por qué este objeto parece mutable, incluso si está congelado o ultracongelado .
@marwahaha - Hemos cambiado a Luxon ahora. En ese momento no estábamos listos para usar 3.x.
Ok, cerraré y asumiré que Object.freeze no funciona para moment
s en 2.x.