2016-03-21 7 views
-1

クラスメソッドをそれぞれのファイルに分けたいと思います。たとえば、私はtest.jsに、このような単純なクラスを持っている場合:ES6クラスの「this」を矢印関数にバインドする最も良い方法は何ですか?

export default class TestClass { 

    testFunction(...args) { 
     return require('./test-function').apply(this, args); 
    } 

} 

そしてtest-function.js方法に:私は矢印の機能に変更した場合

export default function() { 
    /* `this` keyword works fine */ 
} 

しかし、その後、このはないが(理由はレキシカルスコープの?)もう働か:私はを結合する方法

export default() => { 
    /* `this` doesn't work anymore */ 
} 

0正しく私の矢印test機能を使用することができますか?

+0

[矢印関数と関数宣言/式:それらは同等か交換可能ですか](http://stackoverflow.com/q/34361379/218196)を参照してください。 –

答えて

2

tl; dr - することはできません。

矢印関数をエクスポートすると、その関数のグローバルオブジェクト(非厳密モード)にバインドされた字句thisまたは未定義(厳密モード)になります。

これは、矢印の機能がどのように機能するかを示しています。クラスオブジェクトのthisを取得する関数が必要な場合は標準function() {}ボディを使用する必要があります。

+0

ありがとう、ありがとう。 –