ES6 Proxy实现单例模式如何实现?

const singletonify = fn => {

  const one = new fn()

  return new Proxy(fn, {

    construct(target, argumentsList, newTarget) {

      return one

    }

  })

}


class A () {}

const SingleA = singletonify(A)


const a1 = new SingleA()

const a2 = new SingleA()

const a3 = new SingleA()


a1 === a2; //true, but why?

a2 === a3; //true

以上这段代码如何实现单例模式?为何每次创建的const one = new fn();都相同?

精慕HU
浏览 555回答 1
1回答

慕田峪9158850

one被闭包引用了 在内存中一直存在construct接口拦截了fn的实例化操作 直接返回one 也就是new A();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript