一、定义
-
Decorator,即装饰器,从名字上很容易让我们联想到装饰者模式:
- 简单来讲,装饰者模式就是一种在不改变原类和使用继承的情况下,动态地扩展对象功能的设计理论
二、用法
-
类的装饰:当对类本身进行装饰的时候,能够接受一个参数,即类本身
三、使用场景
-
基于Decorator强大的作用,我们能够完成各种场景的需求
-
使用react-redux的时候,如果写成下面这种形式,既不雅观也很麻烦:
class MyReactComponent extends React.Component {}
export default connect(mapStatetoProps, mapdispatchToProps)(MyReactComponent);
- 通过装饰器就变得简洁多了:
@connect(mapStatetoProps, mapdispatchToProps)
export default class MyReactComponent extends React.Component {}
- 将mixins,也可以写成装饰器,让使用更为简洁了:
function mixins(...list) {
return function (target) {
Object.assign(target.prototype, ...list);
};
}
// 使用
const Foo = {
foo() { console.log('foo') }
};
@mixins(Foo)
class MyClass {}
let obj = new MyClass();
obj.foo() // "foo"