Congelamento superficiale contro profondo congelamento in javascript

Congelamento superficiale contro profondo congelamento in javascript
In JavaScript, gli approcci di congelamento profondo e profondo rendono un oggetto immutabile/non modificabile. Ma perché qualcuno dovrebbe usare congelamento superficiale o profondo? BENE! In JavaScript, tutto è un oggetto e sappiamo tutti che gli oggetti in JavaScript sono mutabili (modificabili). Ma cosa succede se qualcuno vuole rendere gli oggetti immutabili (non modificabili)?

Esistono diversi modi per rendere immutabile un oggetto, come l'uso della parola chiave "const", il congelamento superficiale e il congelamento profondo.

Questo articolo mira a presentare una chiara comprensione dei seguenti concetti:

  • Qual è la necessità di congelamento superficiale?
  • Cosa significa congelamento superficiale in JavaScript?
  • Qual è la necessità di un profondo congelamento in JavaScript?
  • Cosa significa profondo congelamento in javascript?
  • Implementazione pratica del profondo congelamento in JavaScript.

Comprenderemo ciascuno dei concetti sopra menzionati attraverso esempi pratici. Quindi iniziamo!

Qual è la necessità di un congelamento superficiale?

Le ragioni sotto l'elenco ci costringono ad attuare il congelamento superficiale o profondo:

  • Tutto ruota attorno agli oggetti in JavaScript.
  • Gli oggetti in JavaScript sono mutabili (modificabili).
  • Un modo per rendere immutabile un oggetto è usare la parola chiave "const".
  • Un oggetto dichiarato con la parola chiave "const" non può essere modificato/riassegnato. Tuttavia, le sue proprietà possono essere modificate/riassegnate.
  • Quindi, cosa succede se qualcuno vuole bloccare/congelare completamente un oggetto?
  • BENE! Il concetto di congelamento superficiale può essere utilizzato in tali casi.

Esempio: identificazione del problema

Questo programma identificherà perché il "const"La parola chiave non è un buon approccio per rendere immutabile gli oggetti.

const empdetails = primo: "Alex", secondo: "John", terzo: "Mike", quarto: "Joe", quinto: "seth";
console.log ("valori di oggetti originali:", empdetails);
empdetails.terzo = "Ambrose";
console.log ("valori di oggetti modificati:", empdetails);
  • In primo luogo, abbiamo creato un oggetto usando la parola chiave "const" e l'abbiamo assegnata alcune coppie di valore chiave.
  • Successivamente, abbiamo stampato i valori originali dell'oggetto.
  • Successivamente, abbiamo modificato il valore della chiave "terza".
  • Infine, abbiamo stampato i valori degli oggetti modificati usando la "console.tronco d'albero()".

L'output ha verificato che la parola chiave "const" non è riuscita a impedire la modifica di un oggetto. L'approccio di congelamento superficiale può essere utilizzato per risolvere/risolvere questo problema.

Cosa significa congelamento superficiale in JavaScript?

L'oggetto.Il metodo Freeze () può congelare completamente un oggetto. L'oggetto.Il metodo Freeze () impedisce a un utente di aggiungere, eliminare o modificare l'oggetto. Inoltre, impedisce agli utenti di accedere ai metodi/proprietà esistenti di un oggetto.

Esempio: implementazione dell'oggetto.Metodo Freeze ()
Consideriamo il codice seguente per ottenere una comprensione di base dell'oggetto.Metodo Freeze ():

const empdetails = primo: "Alex", secondo: "John", terzo: "Mike", quarto: "Joe", quinto: "seth";
console.log ("valori di oggetti originali:", empdetails);
Oggetto.congelamento (empdetails);
empdetails.terzo = "Ambrose";
Elimina EmpDetails;
console.log ("valori di oggetti modificati:", empdetails);
  • Abbiamo usato l'oggetto.Metodo Freeze () per congelare l'oggetto "EmpDetails".
  • Successivamente, abbiamo stampato i valori originali dell'oggetto "EmpDetails".
  • Successivamente, abbiamo provato ad aggiornare la "terza" proprietà dell'oggetto "EmpDetails" ..
  • Successivamente, abbiamo utilizzato l'operatore Elimina per eliminare la proprietà "terza".
  • Infine, abbiamo stampato entrambi i "valori degli oggetti modificati" usando la console.Metodo log ().

L'output ha chiarito che l'oggetto.Il metodo Freeze () non consente modifiche all'oggetto.

Qual è la necessità del congelamento profondo in JavaScript?

L'esempio sopra mostra che l'approccio di congelamento superficiale impedisce correttamente all'oggetto di modificare. Tuttavia, non è considerato l'approccio migliore. Questo perché l'approccio di congelamento superficiale si blocca solo l'oggetto dato. Tuttavia, se l'oggetto contiene alcuni oggetti o array nidificati, in tali situazioni, gli oggetti nidificati possono ancora essere aggiornati.

Quindi, come affrontare gli oggetti nidificati? BENE! In tal caso, possiamo usare il concetto di congelamento profondo.

Cosa significa profondo congelamento in javascript?

È necessario seguire i passaggi di seguito elencati per applicare il congelamento profondo a un oggetto:

  • Dobbiamo congelare ogni proprietà in modo ricorsivo.
  • Per fare ciò, in primo luogo, controlla se il valore di qualsiasi proprietà è un oggetto o no.
  • Se il valore di una proprietà è un oggetto, controlla se è congelato.
  • Se il valore di una proprietà è un oggetto e ancora non è congelato, allora invoca il metodo di blocco su quella proprietà in modo ricorsivo.
  • In questo modo, puoi creare un oggetto immutabile.

Implementazione pratica del profondo congelamento in JavaScript

Il programma qui sotto ti permetterà di capire come congelare un oggetto in JavaScript:

const empDetails =
Primo: "Alex",
Secondo: "John",
Terzo: "Mike",
Quarto: ["Joe", "Dean"],
Quinto: "Seth"
;
const deepf = (empDetails) =>
Oggetto.tasti (empdetails).foreach ((objprop) =>
Se (
typeof empDetails [objprop] === "oggetto" &&
!Oggetto.Isfrozen (EmpDetails [OBJProp])
)
Deepf (EmpDetails [objprop]);
);
restituire oggetto.congelamento (empdetails);
;
Deepf (EmpDetails);
console.log ("valori di oggetti originali:", empdetails);
Oggetto.congelamento (empdetails);
empdetails.quarto [0] = "Ambrose";
console.log ("valori di oggetti modificati:", empdetails);

In questo programma, abbiamo adottato l'approccio ricorsivo per congelare la proprietà di ogni oggetto. Per fare ciò, inizialmente, abbiamo verificato se il valore di qualsiasi proprietà è un oggetto o no. Quando abbiamo scoperto che una proprietà è un oggetto, allora abbiamo controllato se è congelato o meno. Se il valore di una proprietà è un oggetto e ancora non è congelato, allora invochiamo l'oggetto.Metodo Freeze () su quella proprietà in modo ricorsivo.

Dall'output sopra offerto, è chiaro che l'approccio di congelamento profondo impedisce l'oggetto di essere modificato.

Conclusione

In JavaScript, gli approcci di congelamento profondo e profondo rendono un oggetto immutabile/non modificabile. La differenza tra congelamento superficiale e profondo congelamento è che il congelamento superficiale non si occupa degli oggetti/array nidificati. D'altra parte, l'approccio di congelamento profondo può essere utilizzato per congelare completamente un oggetto che include gli oggetti/array nidificati. Questo articolo ha spiegato il funzionamento di congelamento superficiale e profondo con l'aiuto di esempi adeguati.