P粉3948122772023-08-28 17:35:35
明確にするために要約すると、JS オブジェクトをコピーするには 4 つの方法があります。
...{}
または Object.assign()
を使用します。 lodash
のようなユーティリティ ライブラリを参照するとよいでしょう。 を使用すると、実際に新しいオブジェクトが作成されます。これらのプロパティはオブジェクト間で共有されます (一方を変更すると、もう一方も変更されます)。通常のコピーとの違いは、プロパティが新しいオブジェクトのプロトタイプ
__proto__ に追加されることです。これは、元のオブジェクトを
決して 変更しない場合の浅いコピーとしても使用できますが、特にこの動作が必要でない限り、上記の方法のいずれかを使用することをお勧めします。
P粉5205457532023-08-28 12:57:02
明らかに、ステートメント var tempMyObj = myObj;
の内容について誤解があります。
JavaScript では、オブジェクトは参照 (より正確には参照の値) によって渡され、割り当てられるため、tempMyObj
と myObj
は両方とも同じオブジェクトへの参照になります。
これは、何が起こっているかを視覚化するために簡略化された図です
リーリー代入後からわかるように、両方の参照が同じオブジェクトを指しています。
一方を変更する必要があり、他方は変更しない場合は、コピーを作成する必要があります。
リーリー古い回答:
オブジェクトのコピーを作成する他の方法をいくつか紹介します
すでに jQuery を使用しているため:
リーリープレーンな JavaScript を使用する
リーリーこことここを参照してください。