Ответ
Оба метода ограничивают модификацию объекта, но по-разному:
Object.freeze():
- Делает объект полностью неизменяемым
- Нельзя добавлять/удалять свойства
- Нельзя изменять значения существующих свойств
- Нельзя изменять конфигурацию свойств (enumerable, configurable и т.д.)
Object.seal():
- Запрещает добавлять/удалять свойства
- Позволяет изменять значения существующих свойств
- Делает все существующие свойства non-configurable
Пример:
const obj = { prop: 42 };
Object.seal(obj);
obj.prop = 100; // работает
delete obj.prop; // не работает
Object.freeze(obj);
obj.prop = 200; // не работает