介绍

单例就是保证一个类只有一个实例,实例的方法一般先判断实例是否存在,如果存在直接返回出来,如果不存在就先创建了再返回出来。这就可以保证一个类只有一个实例。在JS中,单例是一个命名空间的提供者,从命名空间里提供唯一的访问点来访问该对象。

实现方式

单例一般用在系统间各种模式的通信协调上,下面代码是单例的实践

let Single = (function(){
    // 参数:传递给单例一个参数集合
    function Signleton(args){
        let args = args || {}
        this.name = 'Signle'
        this.pointX = args.pointX || 6
        this.pointY = args.pointY || 10
    }
   let instance // 实例容器
   let _static = {
       name:'Signle',
       // 获取实例的方法
       // 返回Signleton实例
       getInstance:function(args){
           if(!instance){
              instance = Signleton(args) // 没有就创建一个
           }
           return instance // 有就直接return出来拿到
       }
   }
   return _static 
})()

let s = Single.getInstance({pointX:7})
console.log(s.pointX) // 7