ES6_DECORATOR(修饰器)--一

类的修饰

        修饰器(Decorator)是一个函数,用来修改类的行为。这是ES7的一个提案,目前Babel转码器已经支持。

        修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时。这意味着,修饰器能在编译阶段运行代码。


1、只读的修饰器


{

          let readonly=function(target,name,descriptor){

         descriptor.writable=false;returndescriptor

};

  class Test{

   @readonly

          time(){return‘2017-07-20‘}

}

let test=newTest();

 //test.time=function(){

//console.log(‘reset time‘);

//}; 将报错  如果修改的话console.log(test.time());

}


也可以在类的前面进行修饰

{

     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)=>{returnfunction(target,name,descriptor){

      let src_method=descriptor.value;

     descriptor.value=(...arg)=>{

     src_method.apply(target,arg);

    console.info(`log ${type}`);

}

}

}

class AD{

     @log(‘show‘)

show(){

    console.info(‘ad is show‘)

}

   @log(‘click‘)

   click(){

   console.info(‘ad is click‘);

}

}

   let ad=newAD();

   ad.show();

   ad.click();

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在这个世界,最公平的就是时间 但却往往造就了不同的人生 其实别人跟你花了一样的时间 却能变成行业内抢手的人 拉开你...
    林瑟StarKing阅读 1,373评论 0 0
  • 在坚持星球,听CZ院长讲过一堂早课《汇报工作》,听后大受启发。原来工作汇报也可以有“套路”! 前不久又在一本书当中...
    锦梭阅读 8,187评论 0 5
  • 小凡产品经理学习笔记之用户体验报告的正确姿势 还有更多的你想要的产品知识,可以关注微信公众号----小凡产品经理学习笔记
    白兰地奶茶阅读 2,047评论 0 0
  • 今天,身体不舒服,嗓子也发炎了。状态,比前两天好一点。心情没有那么低沉了,看了一本很薄的书。有点遗憾的就是没有给妈...
    杨淑心阅读 1,036评论 1 0
  • 1 字太丑怎么办。。。所以给它当成画把它画出来就好了啊 2 画完了...
    三俗画师阅读 3,283评论 4 5

友情链接更多精彩内容