Junior
Ce face metoda freeze în JavaScript?
sobes.tech AI
Răspuns de la AI
Metoda Object.freeze() îngheață un obiect, împiedicând adăugarea de noi proprietăți, ștergerea celor existente și modificarea valorilor proprietăților existente. De asemenea, împiedică modificarea prototipului obiectului. Obiectul înghețat rămâne neschimbat.
Aplicarea Object.freeze():
- Crearea obiectelor constante: Asigură că obiectul nu va fi modificat în codul ulterior.
- Îmbunătățirea performanței: Unele motoare JavaScript găsesc mai ușor să optimizeze accesul la obiecte imuabile.
- Securitate: Protejează datele interne ale obiectului împotriva modificărilor accidentale sau malițioase.
Notă importantă: Object.freeze() îngheață doar la suprafață (freeze superficial). Dacă proprietățile obiectului fac referire la alte obiecte, aceste obiecte imbricate pot fi modificate dacă nu au fost înghețate separat.
Exemplu:
const obj = {
prop1: 42,
prop2: {
nestedProp: 'hello'
}
};
Object.freeze(obj);
// Tentative de modificare vor fi ignorate în modul "strict"
// În modul non-strict, acestea pot să nu genereze eroare, dar modificările nu vor avea loc
obj.prop1 = 100; // Nu se va schimba
delete obj.prop1; // Nu va fi șters
obj.newProp = 'world'; // Nu va fi adăugat
console.log(obj.prop1); // 42
console.log(obj.newProp); // undefined
// Obiectul imbricat NU este înghețat
obj.prop2.nestedProp = 'goodbye'; // Se va modifica
console.log(obj.prop2.nestedProp); // goodbye