方法装饰器(Decorator)

代码:

function enhance(target, key, descriptor) {
    const method = descriptor.value;
    let extraSpeed = 50;
    let finalSpeed;
    descriptor.value = (...args) => {
        console.log(target === Car.prototype); // true
        console.log(key); // 'drive'
        console.log(descriptor); // 属性描述符
        args[0] += extraSpeed;
        finalSpeed = method.call(target, args);
        return finalSpeed;
    }
    return descriptor;
}

class Car {
    @enhance
    drive(speed) {
        console.log(`时速:${speed}`);
    }
}

let car = new Car('买菜车');
car.drive(100);

运行环境

 

TypeScript官网对方法装饰器对描述

 

posted on 2018-12-25 16:14  沙滩海风  阅读(555)  评论(0编辑  收藏  举报

导航