装饰器除了用在类的身上,还可以用在方法的身上。

    将装饰器用来装饰方法,装饰器的参数会发生一定的变化:

    1. const FuncDecorator: MethodDecorator = (
    2. target: Object,
    3. propertyKey: string | symbol,
    4. descriptor: PropertyDescriptor
    5. ) => {
    6. // descriptor.value 就是使用装饰器的函数代码体,改变这个值就是改变函数的内容
    7. descriptor.value = ()=> {console.log(456)}
    8. // console.log(target)
    9. // console.log(propertyKey)
    10. // console.log(descriptor)
    11. // console.log(args);
    12. // args[0].name = 'fy';
    13. // const method = args[2].value;
    14. // method();
    15. };
    16. class Player {
    17. // public name: string = ''
    18. @FuncDecorator
    19. public run() {
    20. console.log(123);
    21. }
    22. }
    23. // console.log(new Player().name)
    24. new Player().run();