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.