オブジェクトのコピー元とコピー先が完全に独立しているものをDeep copy(ディープコピー)という。
Deep copyの反対がShallow copy(シャローコピー)である。
Deep copyを調べたけど、JavaScriptにはオブジェクトをDeep copyするメソッドは存在しない。
JSON.parse(JSON.stringify(オブジェクト))でDeep copyが可能である。
ただし、この方法でDeep copy可能なのは、オブジェクトをJSON文字列に変換可能なオブジェクトだけである。JSON文字列に変換不可能なオブジェクトは、Deep copyを自分で実装するということかな?
Deep copyの必要なコードはどんなだ?遭遇したことないから分からないな。私の経験が足りていないからだな。まだ、Deep copyの重要性は見えてこない。Deep copyの勉強はここまでにしておこう。
Deep copyの知識のアップデートは当分は先になりそう。
〇2023/11/23(木)追記
StructuredClone()でディープコピーができるらしい。
本当か?とりあえずディープコピーを使う場面が今のとこなし、また今度勉強しよ。
Web Workers はブラウザのメインスレッドとは別のバックグラウンドスレッドで JavaScript を実行する仕組みです。メインスレッドとは異なるスレッドで実行されるため、メインスレッドとのデータのやり取りにはメッセージパッシングが利用されます。
StructuredClone() は、オブジェクトを複製するためのメソッドであり、その名の通りクローンを作成することができます。Web Workers では、メッセージパッシングを通じてメインスレッドとのデータをやり取りする際に、データをコピーして新しいオブジェクトを作成する必要があります。これは、Web Workers が別スレッドで動作するため、同じメモリ空間を共有していないためです。
簡単に言えば、Web Workers ではデータを複製する手段として StructuredClone() が活用されるわけです。これにより、異なるスレッドでの安全なデータのやり取りが実現されます。
「JSONは JavaScript のデータ構造に類似しているため、JavaScriptのオブジェクト構造から派生しているという意味で “サブセット” と表現されることがありますが、JSON自体は言語に依存せず、JavaScriptだけでなく他の多くのプログラミング言語でも利用可能なデータ形式です。」