Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Как сделать объект неизменяемым в JavaScript?

Вопрос проверяет понимание способов защиты объектов от мутаций и принципов иммутабельности.

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

Объект можно сделать неизменяемым с помощью встроенных методов JavaScript.
Самый простой способ — использовать Object.freeze.
Также можно применять иммутабельный подход, создавая новые объекты вместо изменения существующих.
Для глубокой неизменяемости обычно используют рекурсивную заморозку или сторонние библиотеки.

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

Иммутабельность — важный принцип при работе с состоянием и предсказуемыми данными.

Определение

Неизменяемый объект — это объект, свойства которого нельзя изменить, удалить или добавить после создания.

Использование Object.freeze

Этот метод:

  • запрещает изменение существующих свойств

  • запрещает добавление новых свойств

  • запрещает удаление свойств

const user = Object.freeze({
  name: 'Alex'
});

user.name = 'Bob'; // не сработает

Ограничение Object.freeze

Важно помнить, что:

  • заморозка работает только на первом уровне

  • вложенные объекты остаются изменяемыми

Иммутабельный подход

Альтернативный и более гибкий вариант:

  • не менять объект напрямую

  • создавать новый объект при каждом изменении

const updatedUser = {
  ...user,
  name: 'Bob'
};

Глубокая неизменяемость

Для полной защиты можно:

  • рекурсивно применять Object.freeze

  • использовать библиотеки для иммутабельных структур данных

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

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

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

#immutability

#freeze

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