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();
                }
            }
        }

 

posted on 2017-04-27 16:27  CodeArtist  阅读(270)  评论(0编辑  收藏  举报