Spec-Zone.ru › Web APIs

Алгоритм структурного клонирования

Алгоритм структурного клонирования копирует сложные объекты JavaScript. Он используется во внутренних вызовах structuredClone(), для передачи данных между воркерами с помощью postMessage(), хранения объектов в IndexedDB или копирования объектов для других API.

Он клонирует, рекурсивно проходя по входному объекту, сохраняя карту ранее посещённых ссылок, чтобы избежать бесконечного прохождения циклов.

Элементы, не поддерживаемые алгоритмом структурного клонирования

  • Function объекты не могут быть дублированы алгоритмом структурного клонирования; попытка приводит к исключению DataCloneError.

  • Клонирование узлов DOM также вызывает исключение DataCloneError.

  • Некоторые свойства объектов не сохраняются:

    • Свойство lastIndex объектов RegExp не сохраняется.
    • Описание свойств, сеттеры, геттеры и аналогичные метаданные не дублируются. Например, если объект помечен как только для чтения с помощью описания свойства, он будет изменяемым в дубликате, поскольку это значение по умолчанию.
    • Цепочка прототипов не обрабатывается и не дублируется.
    • Приватные свойства классов не дублируются. (Хотя приватные свойства встроенных типов могут.)

Поддерживаемые типы

Типы JavaScript

  • Array
  • ArrayBuffer
  • Boolean
  • DataView
  • Date
  • Типы Error (но см. Типы ошибок ниже).
  • Map
  • Number
  • Объекты Object: но только простые объекты (например, из литералов объектов).
  • Примитивные типы, за исключением symbol.
  • RegExp: но обратите внимание, что lastIndex не сохраняется.
  • Set
  • String
  • TypedArray

Типы ошибок

Для типов Error имя ошибки должно быть одним из: Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError (или будет установлено в "Error").

Браузеры должны сериализовать свойства name и message, и ожидается, что они будут сериализовать и другие «интересные» свойства ошибок, такие как stack, cause, и т.д.

AggregateError поддержка ожидается в спецификации в whatwg/html#5749 (и уже поддерживается в некоторых браузерах).

Типы Web/API

  • AudioData
  • Blob
  • CropTarget
  • CryptoKey
  • DOMException: браузеры должны сериализовать свойства name и message. Другие атрибуты также могут быть сериализованы/клонированы.
  • DOMMatrix
  • DOMMatrixReadOnly
  • DOMPoint
  • DOMPointReadOnly
  • DOMQuad
  • DOMRect
  • DOMRectReadOnly
  • EncodedAudioChunk
  • EncodedVideoChunk
  • FencedFrameConfig
  • File
  • FileList
  • FileSystemDirectoryHandle
  • FileSystemFileHandle
  • FileSystemHandle
  • GPUCompilationInfo
  • GPUCompilationMessage
  • GPUPipelineError
  • ImageBitmap
  • ImageData
  • RTCCertificate
  • RTCEncodedAudioFrame
  • RTCEncodedVideoFrame
  • VideoFrame
  • WebTransportError

Примечание: Сериализуемые объекты помечены в файлах Web IDL атрибутом [Serializable].

См. также

  • Спецификация HTML: Безопасная передача структурированных данных
  • Передаваемые объекты
  • Window.structuredClone()
  • WorkerGlobalScope.structuredClone()
  • window.postMessage()
  • Рабочие потоки
  • IndexedDB

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API