Flacher Einfrieren gegen tiefes Einfrieren in JavaScript

Flacher Einfrieren gegen tiefes Einfrieren in JavaScript
In JavaScript machen die flachen Einfrier- und Tiefenfrieransätze ein Objekt unveränderlich/nicht modifizierbar. Aber warum sollte jemand flaches Einfrieren oder ein tiefes Einfrieren verwenden?? Also! In JavaScript ist alles ein Objekt, und wir alle wissen, dass die Objekte in JavaScript veränderlich (modifizierbar) sind. Aber was ist, wenn jemand Objekte unveränderlich machen möchte (nicht modifizierbar)?

Es gibt mehrere Möglichkeiten, ein Objekt unveränderlich zu machen, z.

Dieses Schreiben zielt darauf ab, ein klares Verständnis der folgenden Konzepte zu präsentieren:

  • Was ist der Bedarf an flachem Einfrieren?
  • Was bedeutet flaches Einfrieren in JavaScript??
  • Was ist die Notwendigkeit eines tiefen Einfrierens in JavaScript?
  • Was bedeutet Deep Freeze in JavaScript??
  • Praktische Implementierung des tiefen Einfrierens in JavaScript.

Wir werden jedes der oben genannten Konzepte anhand praktischer Beispiele verstehen. Also lasst uns anfangen!

Was ist die Notwendigkeit eines flachen Einfrierens?

Die folgenden Gründe zwingen uns, den flachen Einfrieren oder den tiefen Einfrieren umzusetzen:

  • Alles dreht sich um die Objekte in JavaScript.
  • Objekte in JavaScript sind veränderlich (modifizierbar).
  • Eine Möglichkeit, ein Objekt unveränderlich zu machen, besteht darin, das Schlüsselwort "const" zu verwenden.
  • Ein mit dem Schlüsselwort "const" deklarierter Objekt kann nicht geändert/neu zugewiesen werden. Die Eigenschaften können jedoch geändert/neu zugewiesen werden.
  • Was ist also, wenn jemand ein Objekt vollständig sperren/einfrieren möchte?
  • Also! Das Konzept des flachen Einfrierens kann in solchen Fällen verwendet werden.

Beispiel: Problemidentifikation

Dieses Programm identifiziert, warum das “ConstSchlüsselwort ist kein guter Ansatz, um Objekte unabzustimmen zu machen.

const empdetails = First: "Alex", Zweiter: "John", dritter: "Mike", Viertes: "Joe", Fünfter: "Seth";
Konsole.log ("Original -Objektwerte:", EmpDetails);
Empdetails.dritter = "Ambrose";
Konsole.log ("Modifizierte Objektwerte:", EmpDetails);
  • Erstens haben wir ein Objekt mit dem Schlüsselwort "const" erstellt und es einige Schlüsselwertpaare zugewiesen.
  • Als nächstes haben wir die ursprünglichen Werte des Objekts gedruckt.
  • Danach haben wir den Wert des „dritten“ Schlüssels geändert.
  • Schließlich haben wir die geänderten Objektwerte mit der „Konsole.Protokoll()".

Die Ausgabe hat überprüft, dass das Schlüsselwort „const“ nicht verhindern konnte, dass ein Objekt geändert wird. Der flache Einfrieransatz kann verwendet werden, um dieses Problem zu lösen/zu beheben.

Was bedeutet flaches Einfrieren in JavaScript??

Das Objekt.Freeze () -Methode kann ein Objekt vollständig einfrieren. Das Objekt.Die Freeze () -Methode beschränkt einen Benutzer daran, das Objekt hinzuzufügen, zu löschen oder zu ändern. Darüber hinaus beschränkt es die Benutzer daran, auf die vorhandenen Methoden/Eigenschaften eines Objekts zugreifen zu können.

Beispiel: Implementierung des Objekts.Freeze () Methode
Betrachten wir den folgenden Code, um ein grundlegendes Verständnis des Objekts zu erhalten.Freeze () Methode:

const empdetails = First: "Alex", Zweiter: "John", dritter: "Mike", Viertes: "Joe", Fünfter: "Seth";
Konsole.log ("Original -Objektwerte:", EmpDetails);
Objekt.Einfrieren (Empdetails);
Empdetails.dritter = "Ambrose";
Empdetails löschen;
Konsole.log ("Modifizierte Objektwerte:", EmpDetails);
  • Wir haben das Objekt verwendet.Freeze () Methode zum Einfrieren des „EmpDetails“ -Objekts.
  • Als nächstes haben wir die ursprünglichen Werte des Objekts "EmpDetails" gedruckt.
  • Danach haben wir versucht, das „dritte“ Eigentum des Objekts „EmpDetails“ zu aktualisieren ..
  • Als nächstes verwendeten wir den Löschbetreiber, um die „dritte“ Eigenschaft zu löschen.
  • Schließlich haben wir beide die "modifizierten Objektwerte" mit der Konsole gedruckt.log () Methode.

Die Ausgabe hat klargestellt, dass das Objekt.Freeze () -Methode ermöglicht keine Änderungen am Objekt.

Was ist die Notwendigkeit des tiefen Einfrierens in JavaScript?

Das obige Beispiel zeigt, dass der Ansatz des flachen Einfrierens erfolgreich verhindert, dass das Objekt geändert wird. Trotzdem wird es nicht als der beste Ansatz angesehen. Dies liegt daran, dass der Ansatz des flachen Einfrierens das gegeben. Wenn das Objekt jedoch einige verschachtelte Objekte oder Arrays enthält, können die verschachtelten Objekte in solchen Situationen weiterhin aktualisiert werden.

Also, wie man mit verschachtelten Objekten umgeht? Also! In einem solchen Fall können wir das Konzept des tiefen Einfrierens verwenden.

Was bedeutet Deep Freeze in JavaScript??

Sie müssen den folgenden Schritten befolgen, um das tiefe Einfrieren auf ein Objekt anzuwenden:

  • Wir müssen jede Eigenschaft rekursiv einfrieren.
  • Überprüfen Sie zuerst, ob der Wert einer Eigenschaft ein Objekt ist oder nicht.
  • Wenn der Wert einer Eigenschaft ein Objekt ist, prüfen Sie, ob sie eingefroren ist.
  • Wenn der Wert einer Eigenschaft ein Objekt ist und dennoch nicht gefroren ist, rufen Sie die Freeze -Methode auf dieser Eigenschaft rekursiv auf.
  • Auf diese Weise können Sie ein unveränderliches Objekt erstellen.

Praktische Implementierung des tiefen Einfrierens in JavaScript

Mit dem folgenden Programm können Sie verstehen, wie Sie ein Objekt in JavaScript tief einfrieren:

const empdetails =
Erstens: "Alex",
Zweitens: "John",
Dritten: "Mike",
Viertens: ["Joe", "Dean"],
Fünfter: "Seth"
;
const Deepf = (EmpDetails) =>
Objekt.Schlüssel (Empdetails).foreach ((objprop) =>
Wenn (
typeof empDetails [objprop] === "Objekt" &&
!Objekt.isfrozen (Empdetails [objprop])
)
Deepf (Empdetails [objprop]);
);
Objekt zurückgeben.Einfrieren (Empdetails);
;
Deepf (Empdetails);
Konsole.log ("Original -Objektwerte:", EmpDetails);
Objekt.Einfrieren (Empdetails);
Empdetails.viertes [0] = "Ambrose";
Konsole.log ("Modifizierte Objektwerte:", EmpDetails);

In diesem Programm haben wir den rekursiven Ansatz übernommen, um das Eigentum jedes Objekts einzufrieren. Zu diesem Zeitpunkt haben wir zunächst überprüft, ob der Wert einer Eigenschaft ein Objekt ist oder nicht. Als wir feststellten, dass eine Eigenschaft ein Objekt ist, haben wir überprüft, ob sie gefroren ist oder nicht. Wenn der Wert einer Eigenschaft ein Objekt ist und dennoch nicht gefroren ist, rufen wir das Objekt auf.Freeze () Methode auf dieser Eigenschaft rekursiv.

Aus der oben genannten Ausgabe ist klar, dass der tiefe Einfrieransatz verhindert, dass das Objekt modifiziert wird.

Abschluss

In JavaScript machen die flachen Einfrier- und Tiefenfrieransätze ein Objekt unveränderlich/nicht modifizierbar. Der Unterschied zwischen flachem Einfrieren und tiefem Einfrieren besteht darin, dass der flache Einfrieren nicht mit den verschachtelten Objekten/Arrays handelt. Andererseits kann der tiefe Gefrieransatz verwendet werden, um ein Objekt vollständig einzufrieren, einschließlich der verschachtelten Objekte/Arrays. In dieser Beschreibung wurde die Arbeit von flachen Einfrieren und tiefem Einfrieren mit Hilfe geeigneter Beispiele erläutert.