It should be fairly clear: the .defineProperty()
method gives you control over how the property can be accessed. When you simply add a property to an object, it's always writable, enumerable, and configurable.
The .defineProperty()
method also lets you set up getter and setter functions.