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

Рейтинг: 1Ответов: 1Опубликовано: 18.04.2023
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);