[解決済み] javascript ES6 クラスインスタンスをクローンする方法
2022-08-14 01:08:23
質問
ES6を使用してJavascriptのクラスインスタンスをクローンする方法を教えてください。
jqueryや$extendに基づいた解決策には興味がありません。
オブジェクトのクローンに関するかなり古い議論を見たことがありますが、この問題は非常に複雑であることを示唆しています。
編集:私の質問が重複していることが示唆されています。私はその回答を見ましたが、それは7年前のもので、ES6以前のjsを使用して非常に複雑な回答を含んでいます。 私は、ES6を可能にする私の質問には、劇的に単純なソリューションがあることを提案しています。
どのように解決するのですか?
複雑で、何度も試しました。最終的に、このワンライナーは私のカスタムES6クラスインスタンスに対して機能しました。
let clone = Object.assign(Object.create(Object.getPrototypeOf(orig)), orig)
プロトタイプの設定を避けることができるのは と言う ではコードがかなり遅くなるからです。
シンボルをサポートしていますが、ゲッター/セッターには完璧ではなく、非列挙可能なプロパティでは動作しません ( Object.assign() ドキュメント ). また、基本的な内部クラス(Array、Date、RegExp、Mapなど)のクローニングは、悲しいことにしばしばいくつかの個別の処理が必要なようです。
結論です。これは混乱です。いつの日か、ネイティブでクリーンなクローン機能ができることを期待しましょう。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] なぜネイティブオブジェクトの拡張は悪い習慣なのか?
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] Angularjs - 現在の日付を表示する
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] jQueryで入力ファイルが空かどうかをチェックする方法
-
[解決済み] これは純関数ですか?