Junior
Co robi metoda freeze w JavaScript?
sobes.tech AI
Odpowiedź od AI
Metoda Object.freeze() zamraża obiekt, uniemożliwiając dodawanie nowych właściwości, usuwanie istniejących i modyfikowanie wartości istniejących właściwości. Zapobiega również zmianie prototypu obiektu. Zamrożony obiekt pozostaje niezmienny.
Zastosowanie Object.freeze():
- Tworzenie stałych obiektów: Gwarancja, że obiekt nie zostanie zmieniony w dalszym kodzie.
- Zwiększenie wydajności: Niektóre silniki JavaScript łatwiej optymalizują dostęp do niezmiennych obiektów.
- Bezpieczeństwo: Ochrona wewnętrznych danych obiektu przed przypadkowymi lub złośliwymi zmianami.
Ważna uwaga: Object.freeze() zamraża tylko powierzchownie (płycizna zamrażania). Jeśli właściwości obiektu odwołują się do innych obiektów, te zagnieżdżone obiekty mogą być modyfikowane, jeśli same nie zostały zamrożone.
Przykład:
const obj = {
prop1: 42,
prop2: {
nestedProp: 'hello'
}
};
Object.freeze(obj);
// Próby modyfikacji będą ignorowane w trybie "strict"
// W trybie nie-strict mogą nie wywołać błędu, ale zmiany nie będą miały miejsca
obj.prop1 = 100; // Nie zmieni się
delete obj.prop1; // Nie zostanie usunięte
obj.newProp = 'world'; // Nie zostanie dodane
console.log(obj.prop1); // 42
console.log(obj.newProp); // undefined
// Zagnieżdżony obiekt NIE jest zamrożony
obj.prop2.nestedProp = 'goodbye'; // Zostanie zmienione
console.log(obj.prop2.nestedProp); // goodbye