JS - 单例模式

268 阅读1分钟
单例模式的定义

单例模式是指在程序中多次使用同一个对象且作用相同时,只创建一个对象,让所有需要调用的地方都共享这一单例对象(也就是一个构造函数,一生只能创建一个实例化对象)
实现思路:准备一个变量,默认赋值为 null,然后在第一次实例化的时候,给这个变量赋值为实例化对象,后续在调用实例化的时候,就不再重新创建,而是拿到这个变量

// 因为Dialog要当成一个函数去使用,所以写一个自执行函数,里面return出来一个函数
const Dialog = (function() {
    // 创建一个变量,开始赋值为 null,后期根据变量的值判断是不是第一次实例化对象
    let instance = null
    
    class Dialog{
        constructor() {
            this.title = ''
            console.log('弹出来一个警示框')
        }
        // 在原型上写一个方法,每次传参从这里改变参数的值
        setTitle(newTitle) {
            this.title = newTitle
        }
    }
    
    return function(type) {
        // 这个分支判断只有第一次实例化对象的时候才会执行
        if(instance === null) {
            instance = new Dialog()
        }
        // 下面代码每次调用函数的时候都会执行
        
        // 现在instance是Dialog这个构造函数的实例化对象,所以可以调用setTitle()
        instance.setTitle(type)
        
        // 最后把这个实例化对象return出去
        return instance
    }
})()
const d1 = Dialog('警告')
console.log(d1)

const d1 = Dialog('通用')
console.log(d2)