提交学习笔记专用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

18 lines
429 B

  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. }