Moment: Object.freeze()の後にすべての非変異機能を有効にします

作成日 2016年01月14日  ·  4コメント  ·  ソース: moment/moment

#1754の議論から@kruncher要求を分割する:

私は瞬間インスタンスでObject.freezeを使用してきましたが、これは一般的に私が必要としていたことを達成しました。 ただし、次のことが失敗することがわかりました。

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

例外:

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)

これを修正して、必要なときにObject.freezeを使用できるようにすることはできますか?

Help Wanted

全てのコメント4件

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'

何かが足りないかもしれませんが、最新のリリースではObject.freezeがまったく機能していないようです。 3.xは不変性が大きく求められていることは知っていますが、それまでの間、Object.freezeには信頼性がありますか? /

ノードバージョン:6.10(〜lts)
モーメントバージョン:2.18.1

@ butterflyhug -strictモードでも、TypeErrorを再現できません。

@ SeanDunford-これは奇妙に思えます。 2.xで不変性を信頼できるかどうかはわかりません。

凍結またはdeepFrozenの場合でも、このオブジェクトが変更可能に見える理由を理解するのに役立ちます。

@ marwahaha -

OK、閉じて、Object.freezeが2.xのmomentに対して機能しないと仮定します。

このページは役に立ちましたか?
0 / 5 - 0 評価