惰性模式

惰性模式(layier):减少每次代码执行时的重复性的分支判断,通过对对象重定义来屏蔽原对象中的分支判断。

//单体模式定义命名空间
var A ={}
A.on = function(dom,type,fn){
    if(dom.addEventListener){
        dom.addEventListener(type,fn,false);
    }else if(dom.attachEvent){
        dom.attachEvent('on'+type,fn);
    }else{
        dom['on'+type] = fn;
    }
}

为元素添加事件时,总是做一遍能力检测,在同一个浏览器执行两次方法,是不会走不同的分支的。采用惰性模式来解决减少函数执行时的重复性分支判断。惰性模式有两种实现方式:1.第一种是在文件加载进来时通过闭包执行该方法对其重新定义,不过会使得页面加载时占用一定的资源。2.第二种是在第一种方式基础上做一次延时执行,在函数第一次调用的时候对其重定义。好处是减少文件加载时的资源消耗,但是在第一次执行有一定的资源消耗,所以是一种对消耗的惰性推移。

1.第一种方法使用加载即执行,在原先的基础上在分支判断中直接return退出循环。

var A ={}
A.on = function(dom,type,fn){
    if(dom.addEventListener){
        return function(dom,type,fn){
            dom.addEventListener(type,fn,false);
        }
    }else if(dom.attachEvent){
        return function(dom,type,fn){
            dom.attachEvent('on'+type,fn);
        }
    }else{
        return function(dom,type,fn){
            dom['on'+type] = fn;
        }
    }
}();

2.惰性执行,对dom执行能力检测并显示重写,在函数最末尾重新执行一遍来绑定事件,不过在文件加载后A.on方法还没能重新被蒂尼工艺,直到某一元素绑定事件时,A.on才能被重新定义

var A ={}
A.on = function(dom,type,fn){
    if(dom.addEventListener){
        A.on = function(dom,type,fn){
            dom.addEventListener(type,fn,false);
        }
    }else if(dom.attachEvent){
        A.on = function(dom,type,fn){
            dom.attachEvent('on'+type,fn);
        }
    }else{
        A.on = function(dom,type,fn){
            dom['on'+type] = fn;
        }
    }
    //执行重定义on方法
    A.on(dom,type,fn);
};

惰性模式是一种拖延模式,由于对象的创建或者数据的计算会花费高昂的代价,因此页面会延迟对这一类对象的创建。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值