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 поверхностный.