Middle
67
questionbank

Как можно запретить изменение объекта в JavaScript?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Можно использовать встроенные методы Object:

  1. Object.preventExtensions(obj): Запрещает добавление новых свойств к объекту, но позволяет изменять и удалять существующие.
  2. Object.seal(obj): Запрещает добавление и удаление свойств, но позволяет изменять существующие свойства. Фактически это preventExtensions + запрет удаления.
  3. Object.freeze(obj): Запрещает добавление, удаление и изменение свойств. Делает объект неглубоко иммутабельным. Это seal + запрет изменения существующих свойств.

Пример использования:

javascript

Важно помнить, что Object.freeze является неглубоким. Если объект содержит ссылки на другие объекты, эти вложенные объекты можно будет изменять, если они сами не заморожены. Для глубокого замораживания требуется рекурсивная функция.

javascript

Сравнительная таблица:

МетодДобавление свойствУдаление свойствИзменение свойств
Object.preventExtensions()НетДаДа
Object.seal()НетНетДа
Object.freeze()НетНетНет