可以使用箭头函数来解决这个问题。箭头函数不会改变上下文,因此保留了装饰器调用时的上下文。以下是一个示例:
class MyClass {
test = 'Hello world';
@MyDecorator()
myMethod = () => {
console.log(this.test);
}
}
在上面的示例中,我们使用一个箭头函数来定义myMethod
而不是普通的函数。当装饰器调用myMethod
时,它仍然保留了类的上下文,因此我们可以访问test
属性并打印它。
通过这种方式,我们就能够在装饰器调用时保留上下文而不改变它。