装饰者模式:在不改变原对象的基础上,通过对其进行包装拓展(添加属性或者方法)使原有对象可以满足用户的更复杂需求。
这样一个场景,用户信息表单需求变化,以前是当用户点击输入框时,如果输入框输入的内容有限制,那么气候变显示用户输入内容的限制格式的提示文案,现在需要加一条,默认输入框上边显示一行提示文案,当用户点击输入框时文案消失。
//以前写的代码
var telInput = document.getElementById('tel_input');
var telWarnText = document.getElementById('tel_warn_text');
telInput.onclick = function(){
console.log(1)
telWarnText.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