Ответ
В JavaScript объекты могут иметь поля с различными дескрипторами, которые определяют их поведение. Основные дескрипторы:
- value – значение свойства
- writable – можно ли изменять значение (true/false)
- enumerable – будет ли свойство перечисляться в циклах (true/false)
- configurable – можно ли удалять или менять дескрипторы (true/false)
- 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