装饰者模式:在不改变原对象的基础上,通过对其进行包装扩展(添加属性或者方法)使原有对象可以满足用户的更复杂需求。
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(){
xxxx;
});