index.js 429 B

123456789101112131415161718
  1. export default function defineLazyProperty(object, propertyName, valueGetter) {
  2. const define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});
  3. Object.defineProperty(object, propertyName, {
  4. configurable: true,
  5. enumerable: true,
  6. get() {
  7. const result = valueGetter();
  8. define(result);
  9. return result;
  10. },
  11. set(value) {
  12. define(value);
  13. }
  14. });
  15. return object;
  16. }