JS装饰器模式

本文介绍了一种不改变原对象的基础上,通过对其进行包装以拓展其功能的设计模式——装饰器模式。该模式通过重新实现原对象的方法,在保留原有功能的同时添加新功能。

装饰器模式:在不改变原对象的基础上,通过对其进行包装拓展(添加属性或者方法),保护原有功能的完整性
需要条件:原对象,新内容(属性/方法)
个人理解:重新实现一下,原对象的方法,在方法内容,先执行原对象的方法,再执行新内容

示例代码如下:

       //装饰者
        /*
           input:原对象
           fn:新内容(属性或方法)
        */
        var decorator = function (input,fn) {
            //获取事件源
            var input = document.getElementById(input);
            //判断事件源,是否绑定某一事件
            if(typeof input.onclick === 'function'){
                //缓存事件源的原有回调函数
                var oldClick = input.onclick;
                //为事件源定义新的回调函数
                input.onclick = function () {
                    //事件源,原有回调函数
                    oldClick();
                    //执行事件源新增回调函数
                    fn();
                }
            }
        }

 

转载于:https://www.cnblogs.com/bsyblog/p/6774897.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值