Как создать класс, если имя его приходит строкой?
Допустим есть у меня различные классы: Test, Conf, Stat и тд...
Мне приходит строка 'test' или 'conf' ... 'strN'
Как мне создать экземпляр класса?
class Test{
constructor(){
this.a = 1;
}
}
const class_name = 'Test';
const _class = new class_name() //не работает, так как говорит строка не функция
const __class = eval(`new ${class_name}()`) // работает, но такой подход мне не нравится
в PHP так работает, а вот в JS что-то пока не нашел варианта как реализовать такое.
P.S. есть вариант использовать eval(), но чет не вызывает доверия
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
class Test { constructor() { this.x = 1 } }
class Conf { constructor() { this.x = 2 } }
class Stat { constructor() { this.x = 3 } }
var map = {
test: Test,
conf: Conf,
stat: Stat,
}
var name = 'conf'
var obj = new map[name]()
console.log(obj)