Edition for Web Developers — Last Updated 16 October 2026
プラットフォームオブジェクトを含むJavaScriptオブジェクトをレルムの境界を越えて渡すことをサポートするために、この仕様では、オブジェクトをシリアル化および逆シリアル化するためのインフラを定義する。これには、基になるデータをコピーする代わりに転送する場合も含まれる。総称して、このシリアル化/逆シリアル化プロセスは"構造化クローン"と呼ばれるが、ほとんどのAPIは別々のシリアル化と逆シリアル化のステップを実行する。(注目すべき例外はstructuredClone()メソッドである。)
/developer.mozilla.org/en-US/docs/Glossary/Serializable_object
/developer.mozilla.org/en-US/docs/Glossary/Serializable_object
/developer.mozilla.org/en-US/docs/Glossary/Serializable_object
/developer.mozilla.org/en-US/docs/Glossary/Serializable_object
/developer.mozilla.org/en-US/docs/Glossary/Serializable_object
/developer.mozilla.org/en-US/docs/Glossary/Serializable_object
/developer.mozilla.org/en-US/docs/Glossary/Serializable_object
シリアル化可能なオブジェクトは、特定のrealmから独立した方法で、シリアル化され、後で逆シリアル化されることをサポートする。 これにより、それらをディスクに保存して後で復元したり、エージェントやエージェントクラスターの境界を越えて複製したりすることができる。
すべてのオブジェクトがシリアル化可能なオブジェクトであるとは限らない。また、シリアル化可能なオブジェクトであるオブジェクトのすべての側面が、シリアル化されるときに必ずしも保持されるわけではない。
転送可能なオブジェクトは、エージェント間での転送をサポートする。 転送とは、基になるデータへの参照を共有し、転送されるオブジェクトを切り離しながら、オブジェクトを効果的に再作成することである。これは、高価なリソースの所有権を譲渡するのに役立つ。すべてのオブジェクトが転送可能なオブジェクトであるとは限らない。また、転送可能なオブジェクトであるオブジェクトのすべての側面が、転送時に必ずしも保持されるわけではない。
転送は、不可逆的かつ非べき等な操作である。一度転送されたものは、二度と転送することはできず、実際に使用することもできない。
Some objects, such as SharedArrayBuffer objects, are restricted to the same agent cluster: they can only be deserialized or received in the agent cluster they were serialized or transferred from. Such objects also cannot be serialized for storage. For example, when postMessage() is used to send one to a cross-site iframe, a shared worker, or a service worker, a messageerror event is fired instead of a message event.
result = self.structuredClone(value[, { transfer }])Support in all current engines.
入力値を取得し、構造化クローンアルゴリズムを実行してディープコピーを返す。transfer配列にリストされている転送可能なオブジェクトは、複製されるだけでなく転送される。つまり、もはや入力値で使用できなくなる。
入力値のいずれかの部分がシリアル化できない場合、"DataCloneError" DOMExceptionを投げる。