Что такое дескрипторы свойств (property descriptors) в JavaScript?
Каждое свойство объекта имеет скрытые атрибуты, описывающие его поведение:
- Data descriptor (свойство-данные):
value— значение свойстваwritable— можно ли изменять значение (trueпо умолчанию для литералов)enumerable— видимо ли при перечислении (for...in,Object.keys())configurable— можно ли удалять свойство и менять его дескриптор
- Accessor descriptor (свойство-аксессор):
get— функция-геттерset— функция-сеттерenumerableиconfigurable
- Свойство не может одновременно быть data и accessor descriptor