2017-08-14 5 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

あなたはMobileが定義されているところから、このような

export default Mobile 

として、デフォルトのエクスポートを使用する必要があり、そのような

import Mobile from './Mobile' 

として、あなたがそれらをインポートpalceで物事を、名前を付けたい場合。


という名前の輸出

export class Mobile { ... } 

を持つ、別のモジュールにその特定の名前をインポートするとこれを比較してください。

import {Mobile} from Mobile 

コメントでloganfsmythで指摘したようにしかし、これはあなたのエラーの原因ではありません。非静的メソッドを使用するには、そのクラスのインスタンスを作成する必要があります。

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

また、クラスをインスタンス化することもありません。 – loganfsmyth

+0

Whopsは、実際のコードに注意を払っていませんでしたが、質問だけです。発言を追加しました。ありがとう! –

+0

私はあなたの解決策を試しましたが、私はエラーを受け取りました:スーパー式はnullまたは関数でなければならず、代わりに未定義でなければなりません。 ES6で書かなければならない方法でコードを書いて、それに精通することができますか? – lelMan

関連する問題