装饰器模式:在不改变原对象的基础上,通过对其进行包装拓展(添加属性或者方法),保护原有功能的完整性
需要条件:原对象,新内容(属性/方法)
个人理解:重新实现一下,原对象的方法,在方法内容,先执行原对象的方法,再执行新内容
示例代码如下:
//装饰者/*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();}}}