JavaScript новый объект по переменной - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь реализовать полиморфизм в Javascript / node.js.Я пытаюсь что-то сделать, но я не уверен, как это называется, поэтому я даже не уверен, что я ищу.

У меня есть несколько различных классов ES6, которые являются взаимозаменяемыми и имеюттот же интерфейс.Я пытаюсь сделать систему расширяемой и подключаемой, чтобы доступные классы не были известны во время разработки.

Я хочу иметь переменную, которая определяет имя класса, который я хочусоздать экземпляр.Так эффективно, я хочу иметь следующее:

class Foo { }
class Bar { }

var classToLoad = "Foo";

var myFoo = new classToLoad;   // I want this to be equivalent to new Foo;

var classToLoad = "Bar";
var myBar = new classToLoad;   // I want this to be equivalent to new Bar;

Может кто-нибудь сказать мне, как это называется и как правильно это сделать?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Должен быть контейнер для идентификации классов по их именам.Обратите внимание, что может быть несколько классов с одинаковыми именами, а имена функций / классов минимизируются в клиентских сценариях.

class Foo { }
class Bar { }

const container = { Foo, Bar };

let classToLoad = "Foo";

let myFoo = new container[classToLoad]();
0 голосов
/ 23 мая 2018

Это может помочь:

var Foo = class Foo { }
var Bar = class Bar { }

var classToLoad = "Foo";

var myFoo = new window[classToLoad]();   // I want this to be equivalent to new Foo;

var classToLoad = "Bar";
var myBar = new window[classToLoad]();   // I want this to be equivalent to new Bar;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...