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
Patricia ArquetteOriginal
2024-12-26 02:03:10757Durchsuche

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;
}

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);

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!

Stellungnahme:
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