Я хочу иметь возможность создать экземпляр определенного класса ES6, передав строковую переменную функции. В зависимости от значения переменной будет создан другой класс.
Пример. У меня есть 2 класса, ClassOne
, ClassTwo
. Я хочу иметь возможность передать переменную функции и вернуть новый класс. Имя класса будет связано с переменной - например. прохождение 'Two'
создаст ClassTwo
.
Я не хочу просто использовать предложение switch
следующим образом:
function createRelevantClass( desiredSubclassName )
{
let args = [],
newClass;
switch( desiredSubclassName )
{
case 'One' :
newClass = new ClassOne(args);
break;
case 'Two' :
newClass = new ClassTwo(args);
break;
}
return newClass;
}
Вместо этого я хочу как-то создать вызов конструктора, используя имя переменной. Возможно ли это?
function createRelevantClass( desiredSubclassName )
{
// desiredSubclassName would be string 'One' or 'Two'
// how to use the 'new' operator or Reflect here to create the class based on the variable passed in
let newClass = ( *magic code to build constructor dynamically* );
return newClass;
}