Heim > Web-Frontend > js-Tutorial > Wie erstelle ich eine echte tiefe Kopie eines JavaScript-Objekts?

Wie erstelle ich eine echte tiefe Kopie eines JavaScript-Objekts?

Patricia Arquette
Freigeben: 2024-12-26 02:03:10
Original
808 Leute haben es durchsucht

How to Create a True Deep Copy of a JavaScript Object?

So klonen Sie JavaScript-Objekte richtig

Das Klonen von JavaScript-Objekten ist eine entscheidende Aufgabe in verschiedenen Programmierszenarien. Aufgrund der Komplexität des Objektsystems von JavaScript kann es jedoch eine Herausforderung sein, eine Kopie eines Objekts zu erstellen, die von am Original vorgenommenen Änderungen unberührt bleibt.

Fallstricke nativer Kopiermethoden

Native Objektzuweisung von JavaScript Der Operator (z. B. x = y) erstellt nur einen Verweis auf das Originalobjekt. Änderungen an x ​​oder y wirken sich auf beide Objekte aus. Darüber hinaus kann das Kopieren von Objekten, die von integrierten JavaScript-Objekten abgeleitet sind (z. B. Array, Datum), zu unerwünschten Eigenschaften führen.

Umfassende Klonlösung

Um eine tiefe Kopie eines JavaScript-Objekts zu erstellen, berücksichtigen Sie Folgendes Folgende umfassende Lösung:

function clone(obj) {
  if (null == obj || "object" != typeof obj) return obj;

  var copy = obj.constructor();
  for (var attr in obj) {
    if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
  }
  return copy;
}
Nach dem Login kopieren

Diese Funktion verwendet einen rekursiven Ansatz, um die Eigenschaften des Objekts zu durchlaufen und ein neues Objekt mit separaten Instanzen zu erstellen für jeden Immobilienwert. Es behandelt die Fälle von null, undefiniert und verschiedenen integrierten Objekttypen und schließt nicht aufzählbare und versteckte Eigenschaften aus.

Randfälle und Annahmen

Während die Lösung die meisten Szenarien abdeckt, geht sie davon aus dass die Objektdaten eine Baumstruktur bilden, d. h. es gibt keine Zirkelverweise innerhalb des Objekts. Außerdem sind Kenntnisse über den Konstruktor des Objekts erforderlich, um das geklonte Objekt ordnungsgemäß zu instanziieren.

Strukturiertes Klonen (ES2022-Update)

In modernen Browsern bietet der strukturierte Klonstandard eine robustere und effizientere Möglichkeit Erstellen Sie tiefe Kopien von Objekten. Die Funktion „structuredClone()“ klont das Objekt in seiner Gesamtheit und behält dabei verborgene Eigenschaften und Zirkelverweise bei.

const clone = structuredClone(object);
Nach dem Login kopieren

Denken Sie daran, dass das Klonen von Objekten eine komplexe Aufgabe sein kann, und berücksichtigen Sie die Einschränkungen jedes Ansatzes basierend auf den spezifischen Anforderungen Ihrer Bewerbung.

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine echte tiefe Kopie eines JavaScript-Objekts?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage