js设计模式之装饰者模式

装饰着模式:对原有对象进行包装,不改变原有对象的基础上,满足新的需求。
应用场景:比如现在有用户输入表单,电话输入框,地址输入框等等,新需求是默认输入框显示一行提示文案,用户点击输入框时文案消失。

var input=docuemnt.getElementById('tel-input);//输入框元素
var warnText=docuemnt.getElementById('tel-warn);//输入提示文案
input.onclick=function(){
    warnText.style.display="inline-block";
    ……
}

利用装饰者模式,原有的功能不会改变,添加新的需求。

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('address_input',function(){
    document..getElementById('demo_text').style.display='none'})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值