Serializable object (シリアライズ可能オブジェクト)
シリアライズ可能オブジェクトは、どのような JavaScript 環境 ("realm") でもシリアライズし、後でデシリアライズすることができるオブジェクトです。
これは例えば、ディスクに格納し後から復元したり、structuredClone()
で複製したり、DedicatedWorkerGlobalScope.postMessage()
を使用してワーカー間で共有したりすることができます。
シリアライズは、元のオブジェクトのすべてのプロパティや、その他の一部を含まないことがあります。
例えば、DOMException
のシリアライズには name
および message
プロパティは必ず含まれますが、他のプロパティが含まれるかどうかは実装に依存します。
結果的に、デシリアライズされたオブジェクトは元オブジェクトと同一のクローン/複製とは限りません。
しかし、デシリアライズされた新しいオブジェクトはディープコピーになるので、元のオブジェクトからシリアライズされ、新しいオブジェクトにデシリアライズされたプロパティは、元のオブジェクトと参照することはありません。
オブジェクトをシリアライズしたりデシリアライズしたりするときに、コピーを作成するよりもリソースを移譲したほうが理にかなっている場合があります。 移譲可能なオブジェクトは移譲可能オブジェクトと呼ばれます。
対応しているオブジェクト
すべてのプリミティブ値は、シリアライズ可能です。 すべてのオブジェクトが、シリアライズ可能なオブジェクトとは限りません。 シリアライズ可能なオブジェクトについては、構造化複製アルゴリズム > 対応済みの型に一覧があります。
メモ: シリアライズ可能なオブジェクトは、Web IDL ファイル に [Serializable]
属性で示されています。