概念
Decorator 是 ES7 的一个新语法,它通过添加@方法名可以对一些对象进行装饰包装然后返回一个被包装过的对象,可以装饰的对象包括:类,属性,方法或参数上。具体可以分为:类装饰器、方法装饰器、访问器装饰器、属性装饰器、参数装饰器。
格式
普通装饰器
普通装饰器的代码会在定义类之前执行, 并且在执行的时候会把这个类传递给装饰器。
装饰器工厂
如果一个函数返回一个回调函数, 如果这个函数作为装饰器来使用, 那么这个函数就是 装饰器工厂。在绑定的时候由于在函数后面写上了 (), 所以会先执行装饰器工厂拿到真正的装饰器, 真正的装饰器会在定义类之前执行, 所以紧接着又执行了里面。
装饰器组合
普通的装饰器可以和装饰器工厂结合起来一起使用,结合起来一起使用的时候, 会先 从上至下 的执行所有的装饰器工厂, 拿到所有真正的装饰器, 然后再 从下至上 的执行所有的装饰器。