Какие знаешь дескрипторы полей объекта

«Какие знаешь дескрипторы полей объекта» — вопрос из категории JavaScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В JavaScript объекты могут иметь поля с различными дескрипторами, которые определяют их поведение. Основные дескрипторы:

  1. value – значение свойства
  2. writable – можно ли изменять значение (true/false)
  3. enumerable – будет ли свойство перечисляться в циклах (true/false)
  4. configurable – можно ли удалять или менять дескрипторы (true/false)
  5. get/set – геттеры и сеттеры свойства

Пример:

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

console.log(obj.readOnlyProp); // 42
obj.readOnlyProp = 100; // TypeError в strict mode