在TS中可以通过把类的constructor添加private修饰符来禁止外部通过new来创建新的实例
class ClassName {
private static instace: ClassName
private constructor() { }
static getInstance(): ClassName {
if (!ClassName.instace) {
ClassName.instace = new ClassName()
}
return ClassName.instace
}
}
当试图用new创建实例的时候会有报错
在ES6中没有private修饰符,但是可以通过在constructor中添加返回值的方法达到类似效果
class Single {
static instance = null
constructor() {
if (!Single.instance) {
Single.instance = this
}
return Single.instance
}
}