Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: freeze, immutability

Как работает Object.freeze и является ли он глубоким?

Вопрос проверяет знание механизмов заморозки объектов и их ограничений.

Короткий ответ

Object.freeze запрещает изменение свойств объекта.
Он блокирует добавление, удаление и изменение свойств первого уровня.
Однако заморозка не является глубокой.
Вложенные объекты остаются изменяемыми.

Длинный ответ

Object.freeze часто воспринимается как способ сделать объект полностью неизменяемым, но это не совсем так.

Определение

Object.freeze — это метод, который делает объект нерасширяемым и незаписываемым на верхнем уровне.

Что именно блокируется

После заморозки:

  • нельзя изменить значение свойства

  • нельзя добавить новое свойство

  • нельзя удалить существующее свойство

const config = Object.freeze({
  mode: 'dark',
  options: { debug: true }
});

Почему заморозка не глубокая

Вложенные объекты:

  • не замораживаются автоматически

  • остаются изменяемыми

config.options.debug = false; // допустимо

Проверка заморозки

Для проверки можно использовать:

  • Object.isFrozen

  • Object.isSealed

Когда этого достаточно

Object.freeze подходит, если:

  • объект плоский

  • вложенные структуры не изменяются

  • требуется базовая защита от мутаций

Краткий вывод

Object.freeze — поверхностная защита. Для глубокой неизменяемости требуется дополнительная логика.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#freeze

#immutability

Подпишись на React Developer в телеграм