设计模式之装饰器模式

144 阅读1分钟

装饰器模式

所谓的装饰器模式其实就是在不改变原有功能的基础上添加新的功能。

假设已经存在一个核心函数。在执行整个函数之前需要加上自己的处理逻辑。可以这样处理:

function core() {
  console.log('this is core');
}

Function.prototype.before = function (fn) {
  return  () => {
    fn()
    this()
  }
}

let newCore = core.before(()=>{
  console.log('my function');
})

newCore()

有这样一种场景,在已经添加了处理方法的监听事件上需要添加自己的逻辑。显然,我们不可以改变原来的绑定方法,这时,就可以使用装饰器模式来处理。

window.onload = function () {
    console.log('onload');
};

var _onload = window.onload || function () {};

window.onload = function () {
    _onload();
    console.log('自己的处理函数');
};