可序列化物件
可序列化物件是可以被序列化並在任何 JavaScript 環境(“域”)中稍後反序列化的物件。這使得它們能夠,例如,被儲存在磁碟上然後恢復,或者使用 structuredClone() 克隆,或者使用 DedicatedWorkerGlobalScope.postMessage() 在 Worker 之間共享。
序列化可能不包含原始物件的全部屬性和其他方面。例如,DOMException 的序列化必須包含 name 和 message 屬性,但是否包含其他屬性取決於實現。因此,反序列化的物件可能不是原始物件的精確克隆/副本。然而,新反序列化的物件將是 深複製,因此從原始物件序列化然後反序列化到新物件中的任何屬性都不會與原始物件共享引用。
在某些情況下,序列化和反序列化物件時,將一些資源轉移而不是建立副本是很有意義的。可以被轉移的物件稱為 可轉移物件。
支援的物件
所有原始值都是可序列化的。並非所有物件都是可序列化物件。可以序列化的物件列在:結構化克隆演算法 > 支援的型別
注意:可序列化物件在 Web IDL 檔案 中使用 [Serializable] 屬性進行標記。