@photosho

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

Подскажите, как в JavaScript создать объект, используя имя класса, записанное в строке? Пример:

var obj = new ClassName(param);

Это как создается обычно. А мне нужно, чтобы имя "ClassName" бралось из строки, и параметры конструктора передавались в виде массива. Есть такая возможность в JavaScript?
  • Вопрос задан
  • 104 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Сложите классы в объект.
const classes = {
  Class1: class {
    constructor(val) {
      this.val = val;
    }

    method1() {
      console.log('Class1', this.val);
    }
  },
  Class2: class {
    constructor(val1, val2) {
      this.val1 = val1;
      this.val2 = val2;
    }

    method2() {
      console.log('Class2', this.val1, this.val2);
    }
  },
};

function createInstanceAddCallMethod(className, constructorParams, methodName) {
  const instance = new classes[className](...constructorParams);
  instance[methodName]();
}

createInstanceAddCallMethod('Class1', [ 69 ], 'method1');
createInstanceAddCallMethod('Class2', [ 187, 666 ], 'method2');
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
как всегда с динамическими именами в JavaScript, нужен объект со свойствами. К свойствам можно обращаться динамически, брать их имя из строки:
const A = class { constructor() { this.name = 'I am A';} };
const B = class { constructor() { this.name = 'I am Bee';} };
const allClasses = { A, B };

const className = 'A';

const instance = new allClasses[className]();
console.log(instance.name); // I am A
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
но читайте то что написано красным, зачем кстати вам это нужно?
https://developer.mozilla.org/en-US/docs/Web/JavaS...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы