intermediate
Дескрипторы свойств и аксессоры
writable, enumerable, configurable, getters, setters и reflective object APIs.
Data descriptors имеют `value` и флаги `writable`, `enumerable`, `configurable`. Accessor descriptors используют `get`/`set` вместо хранимого значения.
`Object.defineProperty`, `Object.getOwnPropertyDescriptor` и `Reflect` объясняют скрытые или неперечисляемые свойства. Getters могут иметь побочные эффекты при каждом чтении — держите их лёгкими.
`Object.freeze` поверхностный: вложенные объекты остаются изменяемыми.
На интервью объясняйте концепцию на конкретном примере и называйте поведение рантайма, которое проверяют.
Типовые ошибки: путать похожие API и забывать edge cases в live coding.
Компромисс часто между ясностью и производительностью или между безопасностью и удобством.
Чеклист:
- Знайте writable/enumerable/configurable.
- Различайте data и accessor descriptors.
- Помните, что freeze поверхностный.