Creare oggetti immutabili in Javascript

Mattepuffo's logo
Creare oggetti immutabili in Javascript

Creare oggetti immutabili in Javascript

Può capitare di avere degli oggetti che vogliamo rendere immutabili.

In Javascript abbiamo due funzioni apposite, in quanto const non basta.

Con const non abbiamo oggetti immutabili; ma semplice non ci è permesso di riassegnare un valore, ma possiamo comunque modificarlo.

Detto ciò vediamo qualche esempio; partiamo da quello classico:

let myObj = {
    nome: "Nome",
    cognome: "Cognome"
}

let persona = myObj;
persona.nome = "Modifica";

console.log(persona);

Come potete vedere in console, abbiamo modificato il nome.

Ora proviamo ad usare Object.freeze:

let myObj = {
    nome: "Nome",
    cognome: "Cognome"
}

let persona = Object.freeze(myObj);
persona.nome = "Modifica";

delete persona.nome;
delete myObj.nome

console.log(persona);

Come potete vedere l'oggetto è rimasto lo stesso; non abbiamo potuto ne cambiare valore, ne cancellare campi.

PhpStorm addirittura mi avvertiva che non potevo fare il cambio valore.

Però, se volessimo dare la possibilità di fare l'update ma non altre operazioni?

Possiamo usare Object.seal:

let myObj = {
    nome: "Nome",
    cognome: "Cognome",
    attributi: {
        email: "em@em.it"
    }
}

let persona = Object.freeze(myObj);
persona.nome = "Modifica";
persona.attributi.email = "nuova@nuova.it";

console.log(persona);

Abbiamo modificato il valore, ma la cancellazione non ha avuto effetto.

Enjoy!


Condividi

Commentami!