ES7 — 装饰器(Decorator)
最后更新于:2022-04-02 08:10:31
[TOC]
>[success] # 装饰器讲解
~~~
1.学过'pyhon' 的开发可能对装饰器比较熟,在'es7'也提出装饰的语法糖
2.装饰器模式,顾名思义,就是将某个类重新装扮下,使它在功能上更强
大,但是作为原来的这个类,使用者不应该感受到装饰前与装饰后有什么
不同,否则就破坏了原有类的结构,所以装饰器模式要做到对装饰类的使
用者透明
~~~
>[danger] ## 声明
~~~
1.本讲解根据找到的参考资料进行重新理解分析归纳,感谢参考文章的作者
整理的文章内容
~~~
>[info] ## 装饰器
* 参考资料:
[阮一峰的装饰器讲解]([http://es6.ruanyifeng.com/#docs/decorator](http://es6.ruanyifeng.com/#docs/decorator))
[关于装饰器的提案](https://github.com/tc39/proposal-decorators)
[掘金-- 小芋头君](https://juejin.im/post/59f1c484f265da431c6f8940)
[IMWeb -- Jianglinyuan](https://imweb.io/topic/5b1403bbd4c96b9b1b4c4e9e)
~~~
1.根据'阮一峰'老师es6入门中说的,Decorator 提案经过了大幅修改,
目前还没有定案,不知道语法会不会再变。
2.修饰器只能用于类和类的方法,不能用于函数,因为存在函数提升。
3.根据我所现阶段接触的文章,
4.装饰器的写法第一种'@'+'函数名',修饰在要被修饰的'类','类中的属性'
,'类中的方法'上
5.装饰器的写法第二种'@'+'函数',修饰在要被修饰的'类','类中的属性'
,'类中的方法'上
6.要注意装饰器 本身后面函数是没有括号的,有括号的是用了工厂方式,返回了
一个函数
~~~
* 对第四条详解讲解
~~~
// 定义的函数
function test(){
//....
}
// 注意这里的test只是方法名字
@test
class MyClass{}
~~~
* 对第五条的讲解利用工厂模式
~~~
// 定义的函数
function test(){
return function(target){
// ...
}
}
// 注意这里的test()函数利用工厂模式
// 实际最后执行的装饰器是该函数的内部返回的函数
@test()
class MyClass{}
~~~
';