Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

構造化複製アルゴリズム

構造化複製アルゴリズム は複雑な JavaScript オブジェクトをコピーするためのアルゴリズムです。これはpostMessage() を介してワーカーと送受信するとき、IndexedDB にオブジェクトを格納するとき、他の API のためにオブジェクトをコピーするときなど、データ転送時に内部で用いられています。

無限ループを避けるため、以前にアクセスした参照のマップを保持しながら、入力オブジェクトを再帰処理することで複製していきます。

構造化複製で動作しないもの

  • Function オブジェクトは構造化複製アルゴリズムでは複製されません。複製しようとするとDataCloneError 例外が発生します。
  • DOM ノードを複製するときも同様にDataCloneError 例外発生します。
  • 一部のオブジェクトのプロパティは保持されません。
    • RegExp オブジェクトのlastIndex フィールドは保持されません。
    • プロパティ記述子、セッター、ゲッター(もしくは同様のメタデータ系機能)は複製されません。たとえば、あるオブジェクトがプロパティ記述子によって読み取り専用になっている場合でも、複製したものでは既定の条件である読み取り/書き込みに変わります。
    • プロトタイプチェーンは探索、複製されません。

対応済みの型

オブジェクト型備考
すべてのプリミティブ型ただし、シンボルを除く
Boolean オブジェクト
String オブジェクト
Date
RegExplastIndex は保持されません。
Blob
File
FileList
ArrayBuffer
TypedArray
DataView
ImageBitmap
ImageData
Array
Objectプレーンなオブジェクト(オブジェクトリテラルなど)のみです。
Map
Set
DOMExceptionブラウザーは、プロパティnamemessage をシリアライズしなければなりません。 他の属性もシリアライズ/複製することができます。
ネイティブのError

エラー名は、Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError (または "Error" に設定)の何れかでなければなりません。

ブラウザーはname およびmessage プロパティをシリアライズしなければならず、stack,cause などのエラーの他の「興味深い」プロパティをシリアライズすることが期待されています。

AggregateError の対応がwhatwg/html#5749 で仕様書に追加される予定です(そして、既に一部のブラウザーが対応しています)。

関連情報

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp