代码之家  ›  专栏  ›  技术社区  ›  Gili Yaniv

通过装饰器访问访问参数

  •  1
  • Gili Yaniv  · 技术社区  · 8 年前

    伊夫开始阅读有关 creation of decorators 以及如何使用它们。 我想知道是否有办法访问decorator函数中的包装方法参数。

    例如,我想创建一个装饰器,日志是方法名和提供的参数。 到目前为止,我只访问了方法名。

      export function logger(target, propertyKey) {
        console.log(propertyKey); //Method name
      }
    
      @logger
      private fetchData(param) {
       ////
      }
    

    对于我来说,访问装饰器中的“FETCDATA”方法的“PARAM”有什么办法?

    提前谢谢。

    编辑:

    解决了的, Link to working example

    1 回复  |  直到 8 年前
        1
  •  1
  •   Estus Flask    8 年前

    target 是类原型。为了在调用期间访问方法参数,应使用包装器替换方法:

      export function logger(target, propertyKey, descriptor) {
        const originalFn = target[propertyKey];
        descriptor.value = function(param) {
          console.log(param);
          return originalFn.call(this, param);
        };
      }
    
      ...
      @logger
      private fetchData(param) {}
      ...
    
    推荐文章