2017-09-06 128 views
0

我有一個很少類的小型庫。在其中一個類中,我使用其他類的方法,因此我將它們實例化,並在代碼中使用它。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' 
    } 

} 

我用這在測試中僅通過其導入:

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

// test stuff calling: 
c3.funcNotWorking() 

我用的WebPack和巴貝爾裝載機編寫本。這個配置似乎工作,因爲它編譯和其他一切工作,但這...

我已經讀過,人們似乎有麻煩與此反應,但這只是Es6。有人能指出我如何解決這個問題嗎?

+0

在class3.js文件中導出默認的Class2,你確定這是你想要的嗎? –

+0

@ŁukaszKapica你是對的。錯字,但是這是一個解釋問題的例子 – Samuel

+0

爲什麼不像Class1和Class2那樣創建Class3的新實例? –

回答

0

上下文是這樣在我的代碼中迷路了。

我在有問題的代碼中使用遞歸,映射和箭頭函數。 Babel編譯版本_this2沒有遵循上下文。

我提取了一些方法,將它們分配給類構造函數,並在類中使用提取的方法並正確編譯。

相關問題