利用Proxy 实现单例模式
实现
export function singleton(className){
let instance = null
return new Proxy(className, {
construct (target, args) {
// 内部类
class ProxyClass {
constructor () {
if (instance === null) {
instance = new target(...args)
}
return instance
}
}
return new ProxyClass()
}
})
}
class Test{
constructor(){
}
}
let ProxyedClass = singleton(Test)
let test1 = new ProxyedClass()
let test2 = new ProxyedClass()
// test1 === test2 ---> true