简单理解就是,有且只有一个实例。
大概意思就是,一个构造函数只能实例化一次,保证以后所使用的,都是这一个实例化,可以确保数据的一致性。
class Me {
myName() {
console.log(`我叫UOrb`)
}
}
// 挂载静态方法
// 这里是一个很简单的闭包
Me.init = (() => {
let me
return () => {
if(!me) me = new Me()
return me
}
})()
// 通过模块化的方法阻绝重复创建 - 因为js的特性,无法打造完美的单例模式。
// 通过 new Me 的到 和 通过 Me.init() 的到的不相等,但是 Me.init() 得到的,相等
// const me1 = Me.init()
// const me2 = Me.init()
// const me3 = new Me()
// me1 === me2 true
// me1 === me3 false
export Me.init()