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