es6 语法 (Decorator)

2018-06-24 00:40:19来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

修饰器是一个函数,用来修改类的行为(注意:1、函数  2、修改行为  3、对类进行操作)

{
//修饰器函数定义 target:类本身,name名称,descriptor描述 let readonly = function(target, name, descriptor) { descriptor.writable = false; //只读 return descriptor }; //类中 class Test { @readonly //调用修饰器 time() { return '2017-03-11' } } let test = new Test(); // test.time=function(){ // console.log('reset time'); // }; //不允许只读属性的方法重新赋值 console.log(test.time()); //2017-03-11 } { let typename = function(target, name, descriptor) { target.myname = 'hello'; } //对类进行修饰 @typename class Test { } console.log('类修饰符', Test.myname); //hello // 第三方库修饰器的js库:core-decorators; npm install core-decorators } { let log = (type) =>{ return function(target,name,descriptor){ let src_method = descriptor.value; descriptor.value = (...arg)=>{ src_method.apply(target,arg); console.info(`log ${type}`); } } } class AD{ @log('show') //log show show(){ console.log('ad is show') //ad is show } @log('click') //log click click(){ console.log('ad is click') //ad is click } } let ad = new AD(); ad.show(); ad.click(); }

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:【前端】javascript+jquery实现手风琴式的滚动banner或产品展示

下一篇:for 与forEach的区别