可序列化对象

可序列化对象是可以被序列化并在任何 JavaScript 环境(“域”)中稍后反序列化的对象。这使得它们能够,例如,被存储在磁盘上然后恢复,或者使用 structuredClone() 克隆,或者使用 DedicatedWorkerGlobalScope.postMessage() 在 Worker 之间共享。

序列化可能不包含原始对象的全部属性和其他方面。例如,DOMException 的序列化必须包含 namemessage 属性,但是否包含其他属性取决于实现。因此,反序列化的对象可能不是原始对象的精确克隆/副本。然而,新反序列化的对象将是 深拷贝,因此从原始对象序列化然后反序列化到新对象中的任何属性都不会与原始对象共享引用。

在某些情况下,序列化和反序列化对象时,将一些资源转移而不是创建副本是很有意义的。可以被转移的对象称为 可转移对象

支持的对象

所有原始值都是可序列化的。并非所有对象都是可序列化对象。可以序列化的对象列在:结构化克隆算法 > 支持的类型

注意:可序列化对象在 Web IDL 文件 中使用 [Serializable] 属性进行标记。