JavaScript ES6クラスインスタンスを複製する方法 質問する

JavaScript ES6クラスインスタンスを複製する方法 質問する

ES6 を使用して Javascript クラス インスタンスを複製するにはどうすればよいですか。

jquery や $extend に基づくソリューションには興味がありません。

オブジェクトのクローン作成に関するかなり古い議論を見たことがありますが、それによると、問題はかなり複雑だそうです。しかし、ES6 では非常にシンプルな解決策が提示されています。以下にその解決策を載せて、皆さんが満足できるものかどうか見ていきたいと思います。

編集: 私の質問は重複しているのではないかと言われています。その回答を見たのですが、7 年前のものであり、ES6 以前の js を使用した非常に複雑な回答が含まれています。ES6 を考慮した私の質問には、はるかに簡単な解決策があるのではないかと思います。

ベストアンサー1

複雑です。いろいろ試しました。最終的に、このワンライナーが私のカスタム ES6 クラス インスタンスで機能しました。

let clone = Object.assign(Object.create(Object.getPrototypeOf(orig)), orig)

プロトタイプの設定を避ける理由は彼らが言うコードの実行速度が大幅に低下します。

シンボルをサポートしていますが、ゲッター/セッターには最適ではなく、列挙できないプロパティでは動作しません(Object.assign() ドキュメント)。また、基本的な内部クラス (Array、Date、RegExp、Map など) の複製には、残念ながら個別の処理が必要になることがよくあります。

結論: 混乱しています。いつかネイティブでクリーンなクローン機能が登場することを期待しましょう。

おすすめ記事