我试图在一个类中编写一个装饰器,但是在this
是正确值的问题上遇到了问题。考虑以下情况,我想拥有一个装饰器,该装饰器在执行装饰方法时仅打印类成员的值:
class A {
private foo = 'bar'
decorate(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value
descriptor.value = function(...args: any[]) {
console.log(this.foo)
return originalMethod.apply(this, args)
}
}
}
我知道代码是错误的,因为在内部子句中,首先,我希望this
是A
的实例,但是后来,我希望它成为{{1 }}。如何正确设置并仍然访问描述符和实例?