Назад к вопросам
Junior
138
questionbank

Что делает метод freeze в JavaScript?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Метод Object.freeze() замораживает объект, предотвращая добавление новых свойств, удаление существующих и изменение значений существующих свойств. Он также предотвращает изменение прототипа объекта. Замороженный объект остается неизменным.

Применение Object.freeze():

  1. Создание константных объектов: Гарантия того, что объект не будет изменен в дальнейшем коде.
  2. Повышение производительности: Некоторым движкам JavaScript легче оптимизировать доступ к неизменяемым объектам.
  3. Обеспечение безопасности: Защита внутренних данных объекта от случайных или злонамеренных изменений.

Важное примечание: Object.freeze() замораживает только поверхностно (shallow freeze). Если у свойств объекта есть ссылки на другие объекты, эти вложенные объекты могут быть изменены, если они сами не были заморожены.

Пример:

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

Object.freeze(obj);

// Попытки изменения будут проигнорированы в "строгом режиме"
// В нестрогом режиме они могут не вызвать ошибку, но изменения не произойдут
obj.prop1 = 100; // Не изменится
delete obj.prop1; // Не удалится
obj.newProp = 'world'; // Не добавится

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

// Вложенный объект НЕ заморожен
obj.prop2.nestedProp = 'goodbye'; // Изменится
console.log(obj.prop2.nestedProp); // goodbye