Chcę utworzyć fabrykę obiektów przy użyciu ES6, ale składnia w starym stylu nie działa z nowymi.Utwórz obiekt z łańcucha znaków w JavaScriptScript ECMAScript 6
mam następny kod:
export class Column {}
export class Sequence {}
export class Checkbox {}
export class ColumnFactory {
constructor() {
this.specColumn = {
__default: 'Column',
__sequence: 'Sequence',
__checkbox: 'Checkbox'
};
}
create(name) {
let className = this.specColumn[name] ? this.specColumn[name] : this.specColumn['__default'];
return new window[className](name); // this line throw error
}
}
let factory = new ColumnFactory();
let column = factory.create('userName');
Co robię źle?
Twojej wiadomości, ręcznie kodowane wersja ES5 tego pracuje tutaj: http: // jsfiddle. net/jfriend00/4x45gqLt /. Prawdopodobnie warto przyjrzeć się, co produkuje babeljs, aby zobaczyć, co jest inne. Podobno 'Column' nie jest globalna (a więc nie jest obiektem' window'), ale wygenerowany kod ES5 pokaże ci na pewno. – jfriend00
Um, 'window [className]' nigdy nie działało niezawodnie. – Bergi