ES7 decorator helloworld

参考文档http://greengerong.com/blog/2015/09/23/es7-zhi-decorators-shi-xian-aopshi-li/

注意:依赖babel-preset-stage-2(stage-0和1 不行),和babel-plugin-transform-decorators-legacy

packag脚本

 "scripts": {
    "build": "babel demo.js -o bundle.js"
  },

执行 npm run build,之后执行node build,可以看到效果
demo.js 见下面

.babelrc

{
    "presets": [
      "es2015",
      "stage-2"
    ],
    "plugins": ["transform-decorators-legacy"]

}

demo


 var  logger = {
    info(msg)
    {
        console.log(msg);
    }
}

let log = (type) => {
    return (target, name, descriptor) => {
        const method = descriptor.value;
        descriptor.value =  (...args) => {
            logger.info(`(${type}) before function execute: ${name}(${args}) = ?`);
            let ret;
            try {
                ret = method.apply(target, args);
                logger.info(`(${type})after function execute success: ${name}(${args}) => ${ret}`);
            } catch (error) {
                logger.error(`(${type}) function execute error: ${name}(${args}) => ${error}`);
            } finally {
                logger.info(`(${type}) function execute done: ${name}(${args}) => ${ret}`);
            }
            return ret;
        }
    }
}


class MyClass {
    @log('MyClass add')
    add(a, b){
        return a + b;
    }
}

var NC = new MyClass();

NC.add(1,2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值