ECMAScript中Decorator修饰器作用及全面详解总结

 浆糊之家   2018-03-30 13:54   549 views 热度值

修饰器

修饰器是用来修改类的行为。目前需要 babel 才可以使用。它最大的特点是:可以在编译期运行代码!其本质也就是在编译器执行的函数。其执行格式如下:

 

修饰器函数接受3个参数,依次是目标函数、属性名(可忽略)、该属性的描述对象(可忽略)。

 

例如之前的 mixin 可以用修饰器实现一个简单的版本:

 

修饰器不仅仅可以修饰类,还可以修饰类的属性和方法:

 

当然也可以同时调用2个修饰器:

 

使用修饰器应该注意:虽然类本质是个函数,但修饰器不能用于函数,因为函数具有声明提升。

core-decroators.js

这是个三方模块,使用import {function Namelist} from 'core-decroators';引入。它提供了几个常见的修饰器:

  • @autobind
    是对象中的 this 始终绑定原始对象:

 

  • @readonly
    使得属性方法只读

 

  • @override
    检查子类方法是否正确的覆盖了父类的同名方法,如果不正确会报错

 

  • @deprecate(也作: @deprecated)
    在控制台显示一条 warning,表示该方法不久后将被废除,接受一个可选的参数作为警告内容, 接受第二个参数(对象)表示更多信息

 

  • @suppressWarnings
    抑制 deprecate 修饰器导致调用 console.warn(), 但异步代码发出的除外。

 

广告买点--日志系统案例代码

传统买点都写在业务逻辑中,为页面中广告做日志统计(点击,展示),展示的时候我们判断一下展示,然后在展示函数中发送一下买点函数

把买点抽离出来可复用的模块,将来接口变了或通讯方式变了,只要改修饰器的代码即可

 

 发表评论


表情