ECMAScript6--18.Decorators修饰器

2017-10-25  本文已影响68人  飞菲fly

1.基本概念

2.基本用法

3.关于方法类里面可以,是不是可以在类外边操作呢?
—可以,有一个前提,在class前面,其他地方都不可以;

{
    let typename = function(target,name,descriptor){
       //在类上增加一个静态属性myname='hello';
        target.myname = 'hello';
    }
    
    @typename
    class Test{
        
    }
    
    console.log('类修饰符',Test.myname); //类修饰符 hello
}

4.日志系统,埋点

{
    let log =(type)=>{
        return function(target,name,descriptor){
            let src_method = descriptor.value;
            descriptor.value=(...arg)=>{
                src_method.apply(target,arg);
                //真实开发中换成埋点函数;语句new Img.src一个接口;
                console.info(`log ${type}`);
            };
        }
    };
    
    class AD{
        @log('show')
        show(){
            console.info('ad is show'):
        }
        @log('click')
        click(){
            console.info('ad is click');
        }
    }
    
    let ad = new AD();
    ad.show();
    ad.click();
    //ad is show
    //log show
    //ad is click
    //log is click
}
上一篇 下一篇

猜你喜欢

热点阅读