zoukankan      html  css  js  c++  java
  • [JavaScript] 单例模式

    特点 一个类只能构造出唯一实例

    条件

    1.确保只有一个实例 ; 2.可以全局访问

    适用

     适用于弹框的实现, 全局缓存
    实现单例模式
    const singleton = function(name) {
      this.name = name
      this.instance = null
    }
    
    singleton.prototype.getName = function() {
      console.log(this.name)
    }
    
    singleton.getInstance = function(name) {
      if (!this.instance) { // 关键语句
        this.instance = new singleton(name)
      }
      return this.instance
    }
    
    // test
    const a = singleton.getInstance('a') // 通过 getInstance 来获取实例
    const b = singleton.getInstance('b')
    console.log(a === b)
    
    弹框层的实践
    const createLoginLayer = function() {
      const div = document.createElement('div');
      div.innerHTML = '登入浮框';
      div.style.display = 'none';
      document.body.appendChild(div);
      return div;
    }
    
    const getSingle = function(fn) {
      let result;
      return function() {
        return result || (result = fn.apply(this, arguments));
      }
    }
    
    const createSingleLoginLayer = getSingle(createLoginLayer);
    
    document.getElementById('loginBtn').onclick = function() {
      let loginLayer = createSingleLoginLayer();
      if( createSingleLoginLayer().style.display == "none" ){
        loginLayer.style.display = 'block';
      }else{
        loginLayer.style.display = 'none';
      }
      
    }
  • 相关阅读:
    《Linux就该这么学》第十二课
    《Linux就该这么学》第十一课
    《Linux就该这么学》第十课
    《Linux就该这么学》第九课
    《Linux就该这么学》第八课
    模板层
    路由层
    git的使用
    属性选择器
    高级选择器
  • 原文地址:https://www.cnblogs.com/SoYang/p/15558346.html
Copyright © 2011-2022 走看看