JavaScript单例模式?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

JavaScript单例模式?

前端问答 2019-12-30 12:41:52 120
JavaScript 前端开发
分享到
取消 提交回答
全部回答(1)
  • 前端问答
    2019-12-30 12:42:20

    单例模式很常用,比如全局缓存、全局状态管理等等这些只需要一个对象,就可以使用单例模式。

    单例模式的核心就是保证全局只有一个对象可以访问。因为 JS 是门无类的语言,所以别的语言实现单例的方式并不能套入 JS 中,我们只需要用一个变量确保实例只创建一次就行,以下是如何实现单例模式的例子

    class Singleton {
      constructor() {}
    }
    
    Singleton.getInstance = (function() {
      let instance
      return function() {
        if (!instance) {
          instance = new Singleton()
        }
        return instance
      }
    })()
    
    let s1 = Singleton.getInstance()
    let s2 = Singleton.getInstance()
    console.log(s1 === s2) // true
    
    

    在 Vuex 源码中,你也可以看到单例模式的使用,虽然它的实现方式不大一样,通过一个外部变量来控制只安装一次 Vuex

    let Vue // bind on install
    
    export function install (_Vue) {
      if (Vue && _Vue === Vue) {
        // 如果发现 Vue 有值,就不重新创建实例了
        return
      }
      Vue = _Vue
      applyMixin(Vue)
    }
    
    1 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程