我开始阅读有关creation of decorators以及如何使用它们的信息。 我想知道是否有办法访问装饰器函数内的包装方法参数。
例如,我想创建一个装饰器,记录日志的方法名称和提供的参数。 到目前为止,我只设法访问了方法名称。
export function logger(target, propertyKey) {
console.log(propertyKey); //Method name
}
@logger
private fetchData(param) {
////
}
有没有办法让我访问装饰器内部的'fetchData'方法的“ param”?
谢谢。
编辑:
答案 0 :(得分:1)
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) {}
...