2017-08-14 42 views
0

我有一个基本类(mobile.js)ES6出口扩展的类,然后将其导入

class Mobile { 
    constructor() { 
     ... 
    } 
    method(msg){ 
     ... 
    } 
} 
module.exports = Mobile; 

然后我将其导入到(mobileextended.js);

import Mobile from './mobile'; 

class MobilePhone extends Mobile { 
    method(){ 
     super.method('hello world!'); 
    } 
} 
module.exports = MobilePhone; 

而在我想导入它mobilephone.js结束:

import MobilePhone from './mobileextended.js'; 

    MobilePhone.method(); 

我怎样才能使ES6风格的工作?因为现在我得到了无法读取未定义错误的属性'open'。

回答

0

如果你想在你导入的。安迪给事物命名,如

import Mobile from './Mobile' 

你应该从哪里Mobile定义的地方使用默认的出口,如

export default Mobile 


比较这与具有名为export

export class Mobile { ... } 

,并在独立的模块中导入特定名称。

import {Mobile} from Mobile 

然而,正如评论所指出的loganfsmyth,这不是你的错误的来源。要使用非静态方法,您需要创建该类的实例。

const mobilePhone = new MobilePhone() 
mobilePhone.method() 
+0

他们也从来没有实例化类。 – loganfsmyth

+0

Whops,没有注意实际的代码,只是问题。添加了评论。谢谢! –

+0

我试过你的解决方案,但我得到错误:超级表达式必须是null或函数,而不是undefined。您能否按照应该用ES6编写代码的方式编写代码,以便熟悉它? – lelMan