Sobes.tech
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():

  1. Tworzenie stałych obiektów: Gwarancja, że obiekt nie zostanie zmieniony w dalszym kodzie.
  2. Zwiększenie wydajności: Niektóre silniki JavaScript łatwiej optymalizują dostęp do niezmiennych obiektów.
  3. 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