2017-09-06 55 views
0

私は少数のクラスを持つ小さなライブラリを持っています。クラスの1つでは、私は他のクラスのメソッドを使用しているので、それらをインスタンス化してコード内で使用します。TypeError:_this2.functionは関数ではありません

一部のクラスでは、thisキーワードの参照方法を使用しています。

例:

// index.js 
import Class1 from './class1' 
import Class2 from './class2' 
import Class3 from './class3' 

export { 
    Class1, 
    Class2, 
    Class3 
} 

// class1.js 
export default Class1 { 
    func1() { 
     return 'something'; 
    } 

    func2() { 
     return this.func1() + 'else'; 
    } 

} 

// class2.js 
export default Class2 { 
    func1() { 
     return 'something'; 
    } 

    func2() { 
     return this.func1() + 'else again'; 
    } 

} 

// class3.js 

import {Class1, Class2} from './index'; 
const c1 = new Class1(); 
const c2 = new Class2(); 

export default Class3 { 
    funcNotWorking(){ 
     return c1.func2() + c2.func3() + 'this does not work' 
    } 

} 

私はちょうどそれをインポートすることにより、テストでこれを使用しています:私はWebPACKのとバベルローダーでこれをコンパイルしています

// test.js 
const c3 = require('library.js').Class3 

// test stuff calling: 
c3.funcNotWorking() 

。この設定はコンパイルされ、それ以外はすべて動作するようですが、これは...

私は、人々がReactでこれに問題があるように見えますが、これはちょうどEs6です。誰かがこれを解決する方法を教えてくれますか?

+0

class3.jsファイルのデフォルトのClass2をエクスポートします。これはあなたが望むものですか? –

+0

@ŁukaszKapicaあなたは正しいです。 Typoですが、これは問題を説明するための例です – Samuel

+0

なぜClass1とClass2で行ったのと同じように、Class3の新しいインスタンスを作成しませんでしたか? –

答えて

0

これは私のコードでは文脈が失われています。

私は、問題を抱えていたコードで再帰、マッピング、および矢印関数を使用します。 Babelコンパイル版_this2は、この文脈に沿っていません。

いくつかのメソッドを抽出し、それらをクラスコンストラクタに割り当て、抽出されたメソッドをクラス内で使用し、正しくコンパイルしました。

関連する問題