構造化複製アルゴリズム
構造化複製アルゴリズム は複雑な 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 型 | エラー名は、 ブラウザーは
|