JavaScript设计模式学习记录(四)

本文深入探讨了软件设计中的三种核心模式:外观模式、参数适配器模式和装饰者模式。通过具体实例,展示了如何利用这些模式解决浏览器兼容性、参数配置及对象扩展等问题。

1.外观模式

个人感觉就是封装监听方法,使之兼容各个浏览器,所以外观模式其实就是封装方法?不知道我理解的对不对

//外观模式实现
function addEvent(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;
    }
}

//调用
var myInput = document.getElementById('myinput');
addEvent(myInput, 'click', function(){
    console,log("绑定一个事件");
});

2.参数适配器模式

插件开发的参数配置也是这么做的,传入的参数不够时,使用的是默认参数。

function doSomeThing(obj){
    var _adapter = {
        name: 'JS设计模式',
        size: 100,
        prize: 50
    }
    for(var i in _adapter){
        _adapter[i] = obj[i] || _adapter[i];
    }
    return _adapter; 
}

3.装饰者模式

特点:在不改变原对象的基础上,通过对其进行包装扩展(添加属性或者方法),使原有对象可以满足用户的更复杂需求。

var decorator = function(input, fn){
    var input = document.getElementById(input);

    if(typeof input.onclick === 'function'){
        var oldClickFn = input.onclick;
        input.onclick = function(){
            oldClickFn();
            fn();
        }
    }else{
        input.onclick = fn;
    }
}

//调用
decorator('tel_input', function(){
    document.getElementById('tel_demo_text').style.display = 'none';
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值