Middle
43
questionbank

Как сделать свойство объекта неизменяемым?

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

Сделать свойство объекта неизменяемым можно несколькими способами:

  1. Использование Object.defineProperty():

    Этот метод позволяет определить или изменить свойства объекта с болееgranularным контролем. Для создания неизменяемого свойства нужно установить дескриптор свойства с writable: false.

    javascript

    Если установить configurable: false, свойство нельзя будет удалить или изменить его дескриптор (включая writable).

    javascript
  2. Использование Object.freeze():

    Этот метод делает объект "замороженным". Это означает, что нельзя добавлять новые свойства, удалять существующие, изменять значения существующих свойств (включая их перечислимость и конфигурируемость), а также изменять прототип объекта.

    javascript

    Важно отметить, что Object.freeze() поверхностное. Если свойство объекта является другим объектом, этот внутренний объект не будет заморожен.

  3. Использование const для переменных, содержащих объект:

    Ключевое слово const делает ссылку на объект неизменяемой, но не сам объект. Вы не сможете переназначить переменную на другой объект, но сможете менять свойства самого объекта.

    javascript

Сравнение методов:

МетодЧто делает неизменяемым?Уровень неизменяемости
Object.defineProperty()Одно конкретное свойствоОпределяется дескриптором
Object.freeze()Весь объектПоверхностный
constСсылку на объектПеременная

Выбор метода зависит от того, насколько granularной должна быть неизменяемость. Для одного свойства подходит Object.defineProperty(), для всего объекта - Object.freeze(). Для предотвращения переназначения ссылки используется const.