— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Flache Kopie
Flache Kopie ist eine bitweise Kopie eines Objekts. Es wird ein neues Objekt erstellt, das eine exakte Kopie der Werte im ursprünglichen Objekt enthält. Wenn eines der Felder des Objekts Verweise auf andere Objekte sind, werden nur die Referenzadressen kopiert, dh nur die Speicheradresse wird kopiert.
Deep copy
Eine Deep copy kopiert alle Felder und erstellt Kopien des dynamisch zugewiesenen Speichers, auf den die Felder verweisen., Eine tiefe Kopie tritt auf, wenn ein Objekt zusammen mit den Objekten kopiert wird, auf die es sich bezieht.
Flache Kopie: Es macht eine Kopie des Verweises auf X in Y. Denken Sie darüber nach als Kopie der Adresse von X. Die Adressen von X und Y sind also gleich, dh sie zeigen auf denselben Speicherort.
Deep copy: Es erstellt eine Kopie aller Mitglieder von X, weist Y einen anderen Speicherort zu und weist dann die kopierten Mitglieder Y zu, um eine tiefe Kopie zu erreichen. Auf diese Weise ist, wenn X verschwindet, Y im Speicher noch gültig.,
Der richtige Begriff wäre das Klonen, bei dem Sie wissen, dass beide völlig gleich, aber dennoch unterschiedlich sind (dh als zwei verschiedene Speicherorte im Speicherplatz gespeichert sind).
Betrachten Sie dieses Beispiel:
var employeeDetailsOriginal = { name: 'Manjula', age: 25, Profession: 'Software Engineer' };
Angenommen, Sie möchten ein Duplikat davon erstellen, sodass Sie auch dann immer zum Original zurückkehren können, wenn Sie die ursprünglichen Werte ändern.,
Ich kann dies tun:
var employeeDetailsDuplicate = employeeDetailsOriginal; //Shallow copy!
Wenn wir einen Wert ändern:
employeeDetailsDuplicate.name = 'NameChanged';
Diese Anweisung ändert auch den Namen von employeeDetailsOriginal, da wir eine flache Kopie oder einen Verweis auf var employeeDetailsOriginal haben. Dies bedeutet, dass Sie auch die ursprünglichen Daten verlieren.
Wenn Sie jedoch eine brandneue Variable mithilfe der Eigenschaften der ursprünglichen employeeDetailsOriginal-Variablen erstellen, können Sie eine Tiefenkopie erstellen.
Jetzt, wenn Sie employeeDetailsDuplicate ändern.,name es wird sich nur auf employeeDetailsDuplicate und nicht employeeDetailsOriginal
Grafische Beispiel
So, Wie zu kopieren JavaScript-Objekt, um die neue variable NICHT durch Referenz?
Ihre einzige Option besteht darin, das Objekt irgendwie zu klonen.
Reine Javascript-Methode zum tiefen Klonen von Objekten
Leave a Reply