装饰器除了用在类的身上,还可以用在方法的身上。
将装饰器用来装饰方法,装饰器的参数会发生一定的变化:
const FuncDecorator: MethodDecorator = (target: Object,propertyKey: string | symbol,descriptor: PropertyDescriptor) => {// descriptor.value 就是使用装饰器的函数代码体,改变这个值就是改变函数的内容descriptor.value = ()=> {console.log(456)}// console.log(target)// console.log(propertyKey)// console.log(descriptor)// console.log(args);// args[0].name = 'fy';// const method = args[2].value;// method();};class Player {// public name: string = ''@FuncDecoratorpublic run() {console.log(123);}}// console.log(new Player().name)new Player().run();
