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():
- Creazione di oggetti costanti: Garantisce che l'oggetto non venga modificato nel codice successivo.
- Miglioramento delle prestazioni: Alcuni motori JavaScript trovano più facile ottimizzare l'accesso a oggetti immutabili.
- 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