Sobes.tech
Junior

Cosa fa il metodo freeze in JavaScript?

sobes.tech AI

Risposta dell'AI

Il metodo Object.freeze() congela un oggetto, impedendo l'aggiunta di nuove proprietà, la rimozione di quelle esistenti e la modifica dei valori delle proprietà esistenti. Impedisce anche di modificare il prototipo dell'oggetto. Un oggetto congelato rimane immutabile.

Applicazione di Object.freeze():

  1. Creazione di oggetti costanti: Garantisce che l'oggetto non venga modificato nel codice successivo.
  2. Miglioramento delle prestazioni: Alcuni motori JavaScript trovano più facile ottimizzare l'accesso a oggetti immutabili.
  3. Sicurezza: Protegge i dati interni dell'oggetto da modifiche accidentali o malevoli.

Nota importante: Object.freeze() congela solo superficialmente (congelamento superficiale). Se le proprietà dell'oggetto fanno riferimento ad altri oggetti, questi oggetti annidati possono essere modificati se non sono stati congelati separatamente.

Esempio:

const obj = {
  prop1: 42,
  prop2: {
    nestedProp: 'hello'
  }
};

Object.freeze(obj);

// I tentativi di modifica saranno ignorati in modalità "strict"
// In modalità non strict, potrebbero non generare errore, ma le modifiche non avverranno
obj.prop1 = 100; // Non cambierà
delete obj.prop1; // Non verrà eliminato
obj.newProp = 'world'; // Non verrà aggiunto

console.log(obj.prop1); // 42
console.log(obj.newProp); // undefined

// Oggetto annidato NON è congelato
obj.prop2.nestedProp = 'goodbye'; // Verrà modificato
console.log(obj.prop2.nestedProp); // goodbye