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
してバインドするにはどうすればよいですか?