ho i seguenti file JavaScript:ES6 moduli e l'eredità
src/js/classes/Lexus.js:
import {Car} from 'src/js/classes/Car';
export class Lexus extends Car {
constructor() {
super("Lexus");
}
}
src/js/classes/Mercedes.js:
import {Car} from 'src/js/classes/Car';
export class Mercedes extends Car {
constructor() {
super("Mercedes");
}
}
src/js/classes/Car.js:
import {Lexus} from 'src/js/classes/Lexus'; //either of those imports works, but not both!
import {Mercedes} from 'src/js/classes/Mercedes'; //either of those imports works, but not both!
export class Car {
constructor(make) {
this.make = make;
}
static factory(msg) {
switch(msg) {
case "Lexus":
return new Lexus();
case "Mercedes":
return new Mercedes();
}
}
}
e app.js:
import {Lexus} from 'src/js/classes/Lexus';
import {Mercedes} from 'src/js/classes/Mercedes';
import {Car} from 'src/js/classes/Car';
var car = Car.factory("Lexus");
console.log(car);
La cosa interessante, se importare siaLexus
o Mercedes
alla classe Auto e chiamare il metodo factory in app.js - tutto funziona bene ; se posso importare siaLexus
e Mercedes
alla classe Car ho ottenuto un errore:
Super expression must either be null or a function, not undefined
Cosa mi manca?
Non sono sicuro se è necessario importare Lexus e Mercedes nell'app.js, poiché non sono costruiti lì. –
Sei sicuro che l'errore non sia basato su Car e che le tue specifiche classi di creazione siano dipendenti da una circolare l'una dall'altra? – Binvention
cosa succede se metti una pausa all'interno dei casi dopo ogni nuova affermazione?Modifica: nvm stai tornando in modo che lo switch sia fuori portata sry – xetra11