When using Object.defineProperty(), what is the difference between a data property and an accessor property?
The fundamental difference between data and accessor properties is in their descriptors: 1) Data properties use 'value' and 'writable' in their descriptors, 2) Accessor properties use 'get' and/or 'set' functions, 3) Data properties directly store values, while accessor properties compute values on-demand, 4) You cannot mix them - a property must be either data or accessor, not both, 5) Both types can be enumerable and configurable, 6) Accessor properties are computed each time they're accessed, 7) Accessor properties are ideal for derived values, validation, or side effects when properties are accessed.