Problem Statement
Which attributes can be controlled via Object.defineProperty?
Explanation
Data descriptors can control value, writable, enumerable, configurable.
Accessor descriptors can control get, set, enumerable, configurable.
By default, properties defined via defineProperty are not enumerable and not configurable unless set.
Code Solution
SolutionRead Only
const o = {};
Object.defineProperty(o, 'x', { value: 42, writable: false });
// o.x = 5; // TypeError in strict mode
console.log(Object.getOwnPropertyDescriptor(o, 'x'));