可序列化对象
**可序列化对象**是可以序列化并在任何 JavaScript 环境(“领域”)中稍后反序列化的对象。例如,这允许它们存储在磁盘上并在以后恢复,或者使用structuredClone()
克隆,或者使用DedicatedWorkerGlobalScope.postMessage()
在工作线程之间共享。
序列化可能不包含原始对象的所有属性和其他方面。例如,DOMException
的序列化必须包含name
和message
属性,但它是否包含其他属性则取决于实现。因此,反序列化的对象可能不是原始对象的完全克隆/副本。但是,新的反序列化对象将是深拷贝,因此从原始对象序列化然后反序列化到新对象的任何属性都不会与原始对象共享任何引用。
在某些情况下,当序列化和反序列化对象时,传递一些资源而不是创建副本是有意义的。可以传输的对象称为可传输对象。
支持的对象
所有原始值都是可序列化的。并非所有对象都是可序列化对象。可以序列化的对象列在:结构化克隆算法 > 支持的类型
**注意:**可序列化对象在Web IDL 文件中使用属性[Serializable]
进行标记。