intermediate

Property descriptors and accessors

Writable, enumerable, configurable, getters, setters, and reflective object APIs.

Data descriptors have `value` plus `writable`, `enumerable`, `configurable`. Accessor descriptors use `get`/`set` instead of a stored value.

`Object.defineProperty`, `Object.getOwnPropertyDescriptor`, and `Reflect` explain hidden or non-enumerable properties. Getters can run side effects on every read — keep them cheap.

`Object.freeze` is shallow: nested objects remain mutable.

On interviews, explain the concept with a concrete example and name the runtime behavior interviewers probe.

Common pitfalls include mixing similar APIs and forgetting edge cases during live coding.

The trade-off is often clarity versus performance or safety versus convenience.

Checklist:

  • Know writable/enumerable/configurable.
  • Distinguish data and accessor descriptors.
  • Remember freeze is shallow.