美文网首页
ES6_DECORATOR(修饰器)--一

ES6_DECORATOR(修饰器)--一

作者: 二狗的小仙女 | 来源:发表于2017-07-20 20:49 被阅读0次

    类的修饰

            修饰器(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(修饰器)--一

          本文链接:https://www.haomeiwen.com/subject/scbjkxtx.html