装饰者模式
装饰者模式的定义:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
动态地将责任附加到对象上,在JS这个动态语言里是比喝水还平常不过的事,而函数又是一种特殊的对象,所以在这里,装饰者模式的含义其实可以翻译为:在不改变原函数的基础上给函数添加新的方法
。
这里最熟悉的例子就是事件的onxxx
绑定法:
btn.onclick = () => {
console.log(1);
};
这个按钮被绑定了一个点击事件,如果要用同样的方法绑定第二个事件,就得新建一个函数,将原来的函数调用后再执行新添加的语句:
const oldClick = btn.onclick;
btn.onclick = () => {
oldClick();
console.log(2);
};
类似地可以用这个方法对所有的函数都进行扩展。