Serializable object
Serializable objects are objects that can be serialized and later deserialized in any JavaScript environment ("realm").
This allows them to, for example, be stored on disk and later restored, or cloned with structuredClone()
, or shared between workers using DedicatedWorkerGlobalScope.postMessage()
.
The serialization may not include all the properties and other aspects of the original object.
For example, a serialization of a DOMException
must include the name
and message
properties, but whether it includes other properties is implementation dependent.
As a result, a deserialized object may not be an identical clone/copy of the original object.
The new deserialized object will however be a deep copy, so any properties that were serialized from the original object and then deserialized into the new object will share no references with the original object.
In some cases when serializing and deserializing an object, it makes sense to transfer some resources rather than creating a copy. Objects that can be transferred are called Transferable objects.
Supported objects
All primitive values are serializable. Not all objects are serializable objects. The objects that can be serialized are listed in: The structured clone algorithm > Supported types
Note: Serializable objects are marked up in Web IDL files with the attribute [Serializable]
.