Der strukturierte Klon-Algorithmus
Derstrukturierte Klon-Algorithmus kopiert komplexe JavaScript-Objekte. Er wird intern verwendet, wennstructuredClone()
aufgerufen wird, um Daten zwischenWorkers überpostMessage()
zu übertragen, Objekte mitIndexedDB zu speichern oder Objekte fürandere APIs zu kopieren.
Es wird durch Rekursion durch das Eingabeobjekt geklont, während eine Karte der bereits besuchten Referenzen erstellt wird, um das endlose Durchlaufen von Zyklen zu vermeiden.
Dinge, die mit dem strukturierten Klon nicht funktionieren
Function
-Objekte können vom strukturierten Klon-Algorithmus nicht dupliziert werden; bei einem Versuch wird eineDataCloneError
-Ausnahme ausgelöst.- Das Klonen von DOM-Knoten führt ebenso zu einer
DataCloneError
-Ausnahme. - Bestimmte Objekteigenschaften werden nicht beibehalten:
- Die
lastIndex
-Eigenschaft vonRegExp
-Objekten wird nicht beibehalten. - Eigenschafts-Deskriptoren, Setter, Getter und ähnliche meta-datenähnliche Merkmale werden nicht dupliziert. Zum Beispiel, wenn ein Objekt mit einemEigenschafts-Deskriptor als schreibgeschützt markiert ist, wird es in der Kopie schreibbar sein, da dies der Standard ist.
- Die Prototypenkette wird nicht durchlaufen oder dupliziert.
- Private Klassenelemente werden nicht dupliziert. (Obwohl interne Felder von eingebauten Typen möglicherweise doch.)
- Die
Unterstützte Typen
JavaScript-Typen
Array
ArrayBuffer
Boolean
DataView
Date
Error
-Typen (siehe jedochFehlertypen unten).Map
Number
Object
-Objekte: aber nur einfache Objekte (z. B. aus Objektliteralen).- Primitive Typen, außer
symbol
. RegExp
: Beachten Sie jedoch, dasslastIndex
nicht beibehalten wird.Set
String
TypedArray
Fehlertypen
FürError
-Typen muss der Fehlername einer der folgenden sein:Error
,EvalError
,RangeError
,ReferenceError
,SyntaxError
,TypeError
,URIError
(oder er wird auf "Error" gesetzt).
Browser müssen die Eigenschaftenname
undmessage
serialisieren und sind angehalten, andere "interessante" Eigenschaften der Fehler wiestack
,cause
, usw. zu serialisieren.
AggregateError
-Unterstützung soll zur Spezifikation inwhatwg/html#5749 hinzugefügt werden (und wird bereits in einigen Browsern unterstützt).
Web/API-Typen
AudioData
Blob
CropTarget
CryptoKey
DOMException
: Browser müssen die Eigenschaftenname
undmessage
serialisieren. Andere Attribute können ebenfalls serialisiert/geklont werden.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
Hinweis:Serialisierbare Objekte sind inWeb IDL-Dateien mit dem Attribut[Serializable]
markiert.
Siehe auch
MDN-Feedback-Box
Diese Seite wurde automatisch aus dem Englischen übersetzt.