zoukankan      html  css  js  c++  java
  • 单例模式总结

    全局变量结合实现惰性的单例:

    惰性单例模式:在需要创建的的时候才创建对象,这种技术在实际开发当中非常的有用

    惰性:在点击按钮时才创建对象比如我们的创建弹框的代码封装在一个函数当中,当点击按钮的时候再创建,而不是在页面加载的时候就创建,导致白白浪费了DOM节点

    单例:如果这个对象已经创建过了,那么直接返回,否则新创建,

    我们把管理逻辑的代码封装在getSingle函数当中,把创建对象的方法作为参数传入,因为result在闭包中所以不会被销毁

    如果在将来的请求当中result已经被赋值那么直接返回这个值

    var getSingle = function(fn) {
        var result;
        //把result放在闭包里永远不会被销毁
        return function(fn) {
           /* if (!result) {
                return result = fn.apply(this, arguments);
            } else {
                return result;
            }*/
            //用逻辑或修改,它是一个短路操作符,如果第一个操作符true就不会对第二个操作数求值
            //这里的this值指window,调用了fn
            return result||result=fn.apply(this,argument);
        }
    }
    //创建弹框的代码
    var createLogin=function(){
        var div=document.createElement("div");
        div.innerHTML="弹框";
        document.body.appendChild(div);
        div.style.display="none";
        return div;
    }
    //保证唯一性
    var createSingleLogin=getSingle(createLogin);
    //保证惰性
    document.getElementById("btn").onclick=function(){
        var login=createLogin();
        login.style.display="block";
    }

     在实际开发中,getSingle函数不仅可以用于创建任何唯一的对象。还可以

  • 相关阅读:
    BZOJ4754 JSOI2016独特的树叶(哈希)
    锦标赛游戏 解题报告
    nowcoder OI 周赛 最后的晚餐(dinner) 解题报告
    Prufer序列
    牛客网 Wannafly挑战赛27 蓝魔法师
    替罪羊树板子
    AT1984 Wide Swap
    洛谷 P1829 [国家集训队]Crash的数字表格 / JZPTAB 解题报告
    CF858F Wizard's Tour 解题报告
    OI中组合数的若干求法与CRT
  • 原文地址:https://www.cnblogs.com/t1amo/p/6773397.html
Copyright © 2011-2022 走看看