ES6を使用してJavascriptクラスインスタンスを複製するにはどうすればよいですか。
Jqueryまたは$ extendに基づくソリューションには興味がありません。
問題が非常に複雑であることを示唆するオブジェクトクローンの非常に古い議論を見てきましたが、ES6では非常に単純なソリューションが提示されます。
編集:私の質問が重複していることが示唆されています。私はその答えを見ましたが、それは7歳であり、ES6以前のjsを使用した非常に複雑な答えが含まれています。私は、ES6を可能にする私の質問が劇的にシンプルなソリューションを持っていることを提案しています。
let clone = Object.assign( Object.create( Object.getPrototypeOf(orig)), orig)
私は多くのことを試してみましたが、最終的にはこれでうまくいきました。
また、プロトタイプを設定することも避けます。これは、 彼らの言うとおり であるため、コードの速度が大幅に低下するためです。
そして、それはワンライナーです!
const clone = Object.assign( {}, instanceOfBlah );
Object.setPrototypeOf( clone, Blah.prototype );
Object.assign の特性に注意してください。シャローコピーを行い、クラスメソッドをコピーしません。
ディープコピーまたはコピーの詳細な制御が必要な場合は、 lodash clone functions があります。