JavaScript 单例模式

249 阅读1分钟

简单理解就是,有且只有一个实例。
大概意思就是,一个构造函数只能实例化一次,保证以后所使用的,都是这一个实例化,可以确保数据的一致性。

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()