構造化複製アルゴリズム
構造化複製アルゴリズム は複雑な JavaScript オブジェクトをコピーするためのアルゴリズムです。これは postMessage()
を介してワーカーと送受信するとき、 IndexedDB にオブジェクトを格納するとき、他の API のためにオブジェクトをコピーするときなど、データ転送時に内部で用いられています。
無限ループを避けるため、以前にアクセスした参照のマップを保持しながら、入力オブジェクトを再帰処理することで複製していきます。
構造化複製で動作しないもの
-
Function
オブジェクトは構造化複製アルゴリズムでは複製されません。複製しようとするとDataCloneError
例外が発生します。 -
DOM ノードを複製するときも同様に
DataCloneError
例外発生します。 -
一部のオブジェクトのプロパティは保持されません。
対応済みの型
オブジェクト型 | 備考 |
---|---|
すべてのプリミティブ型 | ただし、シンボルを除く |
Boolean オブジェクト |
|
String オブジェクト |
|
Date |
|
RegExp |
lastIndex は保持されません。 |
Blob |
|
File |
|
FileList |
|
ArrayBuffer |
|
TypedArray |
|
DataView |
|
ImageBitmap |
|
ImageData |
|
Array |
|
Object |
プレーンなオブジェクト(オブジェクトリテラルなど)のみです。 |
Map |
|
Set |
|
DOMException |
ブラウザーは、プロパティ name と message をシリアライズしなければなりません。
他の属性もシリアライズ/複製することができます。
|
ネイティブの Error 型 |
エラー名は、 ブラウザーは
|