一、装饰者模式
装饰者(decorator)模式能够在不改变对象自身的基础上,在程序运行期间给对像动态的添加职责。与继承相比,装饰者是一种更轻便灵活的做法。
1 | 装饰者模式将一个对象嵌入到另一个对象之中,实际上相当于这个对象被另一个对像包装起来,形成一条包装链。 |
二、装饰函数
在JavaScript中可以很方便的给某个对象扩展属性和方法,但却很难在不改动某个函数源代码的情况下,给该函数添加一些额外的功能。也就是在代码运行期间,我们很难切入某个函数的执行环境。
1、使用装饰者模式例子
1 | /对window.onload的处理 |
2、使用AOP(面向切面编程)装饰函数
在需要执行的函数之前执行某个新添加的功能函数
1 | // 封装的before函数 |
在需要执行的函数之后执行某个新添加的功能函数
1 | // 封装的after函数 |
不污染Function原型的做法
1 | var before = function(fn, beforeFn) { |
3、使用装饰者模式动态的改变ajax函数
1 | Function.prototype.before = function(beforefn) { |