Proxy和Reflect实现单例模式

class A {
    construct(name) {
        console.log('name: ', name);
        console.log('this: ', this)
        this.name = name;
    }

    testFunction() {
        console.log('testFunction')
    }
}

const singletonify = (OriginalClass) => {
  let i
  return new Proxy(OriginalClass, {
    construct (target, args) {
      console.log('test')
      console.log(args)
      if (!i) i = Reflect.construct(target, args);
      return i
    }
  })
}

singleA = singletonify(A)
a = new singleA()

Reflect.construct(target, args)执行的时候为何class A中的construct没执行

阅读 2.1k
2 个回答
class A {
    constructor(name) {
        console.log('name: ', name);
        console.log('this: ', this)
        this.name = name;
    }

    testFunction() {
        console.log('testFunction')
    }
}

const singletonify = (OriginalClass) => {
  let i
  return new Proxy(OriginalClass, {
    construct (target, args) {
      console.log('test')
      console.log(args)
      if (!i) i = Reflect.construct(target, args);
      return i
    }
  })
}

singleA = singletonify(A)
a = new singleA()

是...constructor

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题