Object.freeze() и Object.seal() — это встроенные методы JavaScript, которые ограничивают способы изменения объектов, но отличаются уровнем применяемых ограничений.
Object.freeze() применяет самый строгий уровень неизменяемости:
const obj = Object.freeze({ name: "Alice" });
obj.name = "Bob"; // Молча не срабатывает (или выбросит ошибку в strict mode)
Object.seal() применяет умеренный уровень ограничения:
const obj = Object.seal({ name: "Alice" });
obj.name = "Bob"; // ✅ Разрешено
obj.age = 30; // ❌ Не разрешено
Оба метода — это поверхностные операции. Это означает, что затронут только объект верхнего уровня — вложенные объекты остаются полностью изменяемыми.
const obj = Object.freeze({ address: { city: "Paris" } });
obj.address.city = "London"; // ✅ Всё еще работает!
Чтобы добиться глубокой неизменяемости, нужно рекурсивно применить Object.freeze() ко всем вложенным объектам вручную.
Object.freeze() — никаких добавлений, удалений и измененийObject.seal() — никаких добавлений и удалений, но изменения разрешеныObject.freeze() запрещает добавлять новые свойства, удалять существующие свойства и изменять значения свойств, тогда как Object.seal() позволяет изменять значения существующих свойств.
Новый — ещё не проверен сообществом
Вы