Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Objet sérialisable

Un objet sérialisable est un objet qui peut être sérialisé puis désérialisé dans n'importe quel environnement JavaScript (« realm »). Cela permet, par exemple, de le stocker sur un disque puis de le restaurer, de le cloner avec structuredClone(), ou de le partager entre des workers à l'aide de DedicatedWorkerGlobalScope.postMessage().

La sérialisation peut ne pas inclure toutes les propriétés et autres aspects de l'objet d'origine. Par exemple, la sérialisation d'un DOMException doit inclure les propriétés name et message, mais l'inclusion d'autres propriétés dépend de l'implémentation. En conséquence, un objet désérialisé peut ne pas être un clone ou une copie identique de l'objet d'origine. Le nouvel objet désérialisé sera cependant une copie profonde, donc toutes les propriétés qui auront été sérialisées à partir de l'objet d'origine puis désérialisées dans le nouvel objet ne partageront aucune référence avec l'objet d'origine.

Dans certains cas, lors de la sérialisation et de la désérialisation d'un objet, il est pertinent de transférer certaines ressources plutôt que de créer une copie. Les objets pouvant être transférés sont appelés objets transférables.

Objets pris en charge

Toutes les valeurs primitives sont sérialisables. Tous les objets ne sont pas des objets sérialisables. Les objets pouvant être sérialisés sont listés dans : L'algorithme de clonage structuré > Types pris en charge.

Note : Les objets sérialisables sont annotés dans les fichiers Web IDL (angl.) avec l'attribut [Serializable].