Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2022 browserübergreifend verfügbar.
Die structuredClone()-Methode der Window-Schnittstelle erstellt einen tiefen Klon eines Wertes unter Verwendung des Structured Clone-Algorithmus.
Die Methode erlaubt es auch, transferierbare Objekte im Originalwert zu übertragen anstatt sie zu klonen und in das neue Objekt zu verschieben. Übertragene Objekte werden vom Originalobjekt getrennt und an das neue Objekt angehängt; sie sind im Originalobjekt nicht mehr zugänglich.
Hinweis: Bis einschließlich Firefox 148 erstellte structuredClone.call(iframe.contentWindow) fälschlicherweise Objekte im Realm des Aufrufers anstatt im Realm des iframes. In Firefox 149 wurde die Implementierung geändert, um Objekte im this-Realm zu instanziieren, sodass das Verhalten der Methode enger an die Spezifikation heranreicht.
In allen Browsern klont ein direkter Aufruf structuredClone(value) Werte im Realm des Aufrufers. Ab Firefox 149 können Web-Erweiterungs-Content-Skripte window.structuredClone(value) aufrufen, um Werte im Realm der Seite zu klonen und globalThis.structuredClone(value), um in das Realm des Content-Skripts zu klonen. Weitere Informationen finden Sie in structuredClone in Content-Skripten.
Das zu klonende Objekt. Dies kann jeden strukturiert klonbaren Typ umfassen.
options OptionalEin Objekt mit den folgenden Eigenschaften:
transferEin Array von transferierbaren Objekten, die verschoben statt geklont werden, um das zurückgegebene Objekt zu bilden.
Eine tiefe Kopie des originalen value.
Wird ausgelöst, wenn ein Teil des Eingabewertes nicht serialisierbar ist.
Diese Funktion kann verwendet werden, um JavaScript-Werte tief zu kopieren. Sie unterstützt auch zirkuläre Referenzen, wie unten gezeigt:
Transferierbare Objekte (nur diese) können anstatt dupliziert in das geklonte Objekt über die transfer Eigenschaft des options-Parameters übertragen werden. Das Übertragen macht das Originalobjekt unbrauchbar.
Hinweis: Ein Szenario, in dem dies nützlich sein könnte, ist die asynchrone Validierung von Daten in einem Puffer, bevor diese gespeichert werden. Um zu vermeiden, dass der Puffer verändert wird, bevor die Daten gespeichert sind, können Sie den Puffer klonen und diese Daten validieren. Wenn Sie die Daten zusätzlich übertragen, schlagen Versuche, den ursprünglichen Puffer zu ändern, fehl und verhindern so eine versehentliche Fehlverwendung.
Dieser Code zeigt, wie man ein Array klont und dessen zugrundeliegende Ressourcen an das neue Objekt überträgt. Bei Rückkehr ist das ursprüngliche uInt8Array.buffer gelöscht.
Sie können eine beliebige Anzahl von Objekten klonen und davon eine beliebige Teilmenge übertragen. Dieses Beispiel überträgt arrayBuffer1 aus dem übergebenen Wert, aber nicht arrayBuffer2.
In diesem Beispiel klonen wir ein Objekt mit einem Element, das ein Array ist. Nach dem Klonen wirken sich Änderungen an jedem Objekt nicht auf das andere Objekt aus.
In diesem Beispiel erstellen wir einen ArrayBuffer und klonen dann das Objekt, dem es zugehörig ist, und übertragen den Puffer. Wir können den Puffer im geklonten Objekt verwenden, jedoch führt ein Versuch, den ursprünglichen Puffer zu verwenden, zu einer Ausnahme.
| HTML # dom-structuredclone |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.