Moment: Habilite todas las funciones de no mutación después de Object.freeze ()

Creado en 14 ene. 2016  ·  4Comentarios  ·  Fuente: moment/moment

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?

Help Wanted

Todos 4 comentarios

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.

¿Fue útil esta página
0 / 5 - 0 calificaciones