2017-09-06 129 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没有遵循上下文。

我提取了一些方法,将它们分配给类构造函数,并在类中使用提取的方法并正确编译。

相关问题