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();

}

你可能感兴趣的:(ES6_DECORATOR(修饰器)--一)