Как в JS динамически создать объект нужного Класса, если имя Класса указано в переменной?

class Class1 { }
class Class2 { }
class Class3 { }

className = 'Class1';

// Как динамически создать объект нужного Класса, если имя Класса указано в переменной className?

Ответы (1 шт):

Автор решения: Вячеслав Ильинский

Вы можете сделать это динамически через eval, который выполняет код из строки

class Class1 { }
class Class2 { }
class Class3 { }

const className = 'Class1';

console.log(eval(`new ${className}()`) instanceof Class1);

Но будет проще, если классы находятся в переменной. Например вот так

const classList = {
    'Class1': class {},
    'Class2': class {},
    'Class3': class {},
};

const className = 'Class1';

console.log(new classList[className]() instanceof classList.Class1);

→ Ссылка