[解決済み] moment.jsでミュータビリティを回避するには?
2022-07-19 21:18:41
質問
あるオブジェクトの初期値を保存しなければならないのですが、変数が元のオブジェクトと一緒に変化してしまうのを防ぐのに苦労しています。
残念ながら
Object.freeze()
は動作しません。なぜなら moment.js は
Invalid date
エラーを返すからです。
どのように解決するのですか?
NPMにMoment.jsのプラグインとして
フローズンモーメント
- を使うことができます。
moment().freeze()
の代わりに
Object.freeze(moment())
.
それ以外の場合、バニラ Moment.js は
clone
メソッドがあり、ミュータビリティの問題を回避するのに役立つはずなので、このようにすることもできます。
var a = moment(),
b = a.clone(); // or moment(a)
UPDATEです。
この回答を書いてから、2年が経ちました。この間、日付を扱う別のライブラリが表面化し、多くの支持を得ました。 https://date-fns.org/
このライブラリはデフォルトで immutable であり、モジュール化された機能的なアーキテクチャに従っているため、ツリーシェイクやクライアントサイドのバンドルに適していることを意味します。クライアントサイドで Webpack を多用するプロジェクトで、Moment.js のビルドに問題がある場合、あるいは Moment.js のミュータビリティが頭痛の種になっている場合は、Moment.js に
date-fns
を試してみてください。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] GUID / UUIDの作成方法
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
-
[解決済み] JavaScriptデータフォーマット/プリティプリンタ
-
[解決済み] express.json()とexpress.urlencoded()とは何ですか?
-
[解決済み] ネストしたオブジェクトのプロパティを動的に設定する