我在装饰 ES6 中的实例方法时遇到了一个难题。我在装饰该方法时没有问题,但它似乎被困在类实例的单一状态中。这是我正在处理的具体内容:
class Test {
init() {
this.foo = 'bar';
}
@decorator
decoratedMethod() {
console.log(this.foo); // undefined
}
}
let test = new Test();
test.init();
test.decoratedMethod();
function decorator(target, name, descriptor) {
let fn = target[ name ].bind(target, 'a', 'b');
return fn;
}
我意识到上面的代码正在做它应该做的事情,但是如果我想访问foo
和添加到范围中的其他属性,我该如何装饰decoratedMethod
并仍然绑定新的函数属性?