Можно использовать встроенные методы Object:
Object.preventExtensions(obj): Запрещает добавление новых свойств к объекту, но позволяет изменять и удалять существующие.Object.seal(obj): Запрещает добавление и удаление свойств, но позволяет изменять существующие свойства. Фактически это preventExtensions + запрет удаления.Object.freeze(obj): Запрещает добавление, удаление и изменение свойств. Делает объект неглубоко иммутабельным. Это seal + запрет изменения существующих свойств.Пример использования:
javascript
Важно помнить, что Object.freeze является неглубоким. Если объект содержит ссылки на другие объекты, эти вложенные объекты можно будет изменять, если они сами не заморожены. Для глубокого замораживания требуется рекурсивная функция.
javascript
Сравнительная таблица:
| Метод | Добавление свойств | Удаление свойств | Изменение свойств |
|---|---|---|---|
Object.preventExtensions() | Нет | Да | Да |
Object.seal() | Нет | Нет | Да |
Object.freeze() | Нет | Нет | Нет |