structuredCloneとは
グローバルの structuredClone() メソッドは、指定された値のディープコピーを、構造化複製アルゴリズムを用いて生成します。
シャローコピー、ディープコピー
Javascriptにはシャローコピーとディープコピーが存在します。
Array,Objectはスプレッド構文を使うとコピーできているように見えますが、シャローコピーとなってしまい、変数の変更時に予期せぬ挙動になることがあります。
そのため今までJS開発者はディープコピーを行うために各種ライブラリを使ってきたわけですが、そろそろネイティブを使い始めてもいいんじゃないのかと思い記事にしてみました。
オブジェクトのシャローコピーとは、コピーがコピー元のオブジェクトとプロパティにおいて同じ参照を共有する(同じ基礎値を指す)コピーのことを指します。
オブジェクトの ディープコピー とは、コピー先のオブジェクトのプロパティがコピー元のオブジェクトのプロパティと同一の参照(同じ値を指す)を共有しないコピーのことです
で何が問題があるのかというと
MDNで記載されているブラウザの互換性の部分次第ということになると思ってます。
いちおうすべてチェックが入っていますが、その内容を確認すると、一番問題になりそうなのは、safari 15.4かと考えています。(OSと紐づいてるためUPDATEしてない人多そうという勝手なイメージ)
safari 15.4ということはiOS15.4なわけで、リリースは2022/03です。1年半も経過しiOS17も出そうな時期であるためそろそろいいんじゃないかと・・・
でも旧OS使っている人は数パーセントでもいるのはいそうなので、安全を取ろうとするとやっぱり無理なのかなとも思いつつ