Блокировка перезаписи свойств объекта

Объявите someProp не записываемым через Object.defineProperty либо заморозьте весь объект. Для защиты только одного поля подходят writable:false и configurable:false.

Короткий ответ

Что ответить на собеседовании

Объявите someProp не записываемым через Object.defineProperty либо заморозьте весь объект. Для защиты только одного поля подходят writable:false и configurable:false.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо обеспечить, чтобы значение свойства объекта нельзя было изменить после его установки.

 const obj = {
    someProp: ''
}
console.log(obj.someProp)

obj.someProp = 'James'
console.log(obj.someProp)

В примере показано обычное поведение JavaScript, где свойство someProp переопределяется. Требуется изменить код так, чтобы попытка присвоения нового значения не меняла исходное значение свойства.

Ответ

Объявите someProp не записываемым через Object.defineProperty либо заморозьте весь объект. Для защиты только одного поля подходят writable:false и configurable:false.

const obj = {};
Object.defineProperty(obj, 'someProp', {
  value: '', enumerable: true,
  writable: false, configurable: false
});

Присваивание obj.someProp = 'James' не меняет пустую строку. В strict mode оно бросит TypeError, а без strict обычно будет проигнорировано. configurable:false не позволяет удалить поле и создать заново с другим значением. Если значение — вложенный объект, запрет переприсваивания не делает его внутренние поля неизменяемыми.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее