灏天阁

房子装修 - 装饰者模式

· Yin灏

装饰者模式:在不改变原对象的基础上,通过对其进行包装拓展(添加属性和方法)使原有对象可以满足用户用户的更复杂需求。

装饰已有的功能对象

// 装饰者
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 () {
  // ...
});
decorator("name_input", function () {
  // ...
});
decorator("adress_input", function () {
  // ...
});

- Book Lists -