2017-08-14 1 views
0

Ich habe eine Basisklasse (mobile.js)ES6 Export erweiterte Klasse und dann importieren

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

Dann importieren ich es (mobileextended.js);

import Mobile from './mobile'; 

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

Und am Ende habe ich es importieren möchten mobilephone.js:

import MobilePhone from './mobileextended.js'; 

    MobilePhone.method(); 

Wie kann ich, dass die Arbeit in ES6 Stil machen? Weil ich jetzt bekomme kann nicht lesen Eigenschaft 'offen' von undefinierten Fehler.

Antwort

0

Wenn Sie Dinge in der palce nennen Sie sie, wie

import Mobile from './Mobile' 

importieren sollten Sie einen Standardexport, wie

export default Mobile 

vom Ort verwenden, wo Mobile definiert ist.


Vergleichen Sie dies mit einem benannten Export

export class Mobile { ... } 

und importiert, die bestimmte Namen in einem separaten Modul mit.

import {Mobile} from Mobile 

Wie jedoch durch loganfsmyth in den Kommentaren darauf hingewiesen, dies ist nicht die Quelle des Fehlers. Um eine nicht statische Methode zu verwenden, müssen Sie eine Instanz dieser Klasse erstellen.

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

Sie sind auch nie die Klasse instanziieren. – loganfsmyth

+0

Whops, achtete nicht auf den eigentlichen Code, nur die Frage. Die Bemerkung hinzugefügt. Vielen Dank! –

+0

Ich habe versucht, Ihre Lösung, aber ich habe Fehler: Super-Ausdruck muss entweder Null oder eine Funktion, nicht undefiniert statt. Können Sie den Code bitte so schreiben, wie er in ES6 geschrieben sein sollte, damit ich mich damit vertraut machen kann? – lelMan

Verwandte Themen