Document Object.defineProperty for API extension

Compatibility does not change, but library only uses Object.defineProperty instead of Object.defineProperties