Вопрос проверяет понимание способов защиты объектов от мутаций и принципов иммутабельности.
Объект можно сделать неизменяемым с помощью встроенных методов 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 защищает объект поверхностно. Для полной иммутабельности лучше использовать создание новых объектов.