方法装饰器(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官网对方法装饰器对描述

原文地址:https://www.cnblogs.com/sea-breeze/p/10174640.html