structuredClone(), to transfer data between Workers via
postMessage(), storing objects with IndexedDB, or copying objects for other APIs.
It clones by recursing through the input object while maintaining a map of previously visited references, to avoid infinitely traversing cycles.
Function objects cannot be duplicated by the structured clone algorithm; attempting to throws a
- Cloning DOM nodes likewise throws a
- Certain object properties are not preserved:
lastIndex property of
RegExp objects is not preserved.
- Property descriptors, setters, getters, and similar metadata-like features are not duplicated. For example, if an object is marked readonly with a property descriptor, it will be read/write in the duplicate, since that's the default.
- The prototype chain is not walked or duplicated.