Динамическое создание классов

105
18 декабря 2020, 19:10

Например, есть несколько классов classA, classB и мне необходимо создать класс динамически, как в php.

class classA {
  constructor(parametrs) {
    this.parametrs = JSON.parse(parametrs);
  }
};
class classB {
  constructor(parametrs) {
    this.parametrs = JSON.parse(parametrs);
  }
};

Как правильно создать класс по такому принципу:

let newClass = new 'classA' ('{"width":"0","height":"0"}');
Answer 1

В данном случае достаточно просто сохранить классы в объект что-то вроде

var map = {classA, classB}

и затем просто использовать

let newClass = new map['classA'] ('{"width":"0","height":"0"}');

class classA { 
  constructor(parametrs) { 
    this.parametrs = JSON.parse(parametrs); 
  } 
}; 
class classB { 
  constructor(parametrs) { 
    this.parametrs = JSON.parse(parametrs); 
  } 
}; 
 
var map = { 
  classA, 
  classB 
} 
 
console.log(new map['classA']('{"width":"0","height":"0"}') instanceof classA); 
console.log(new map['classB']('{"width":"0","height":"0"}') instanceof classB);

READ ALSO
Добавление css классов по условию в Vue.js

Добавление css классов по условию в Vue.js

При переносе кода из проекта на aspnet core в бекенд на vue я столкнулся с тем, что хочу записать некоторые фрагменты шаблона более лаконично

127
Почему в js не работает height:auto?

Почему в js не работает height:auto?

Как сделать чтобы высота картинки в блоке была auto? Те ширина картинки всегда 100%, а высота блока подстраивалась по пропорциональной высоте...

113
Ошибка при взятии json c сервера

Ошибка при взятии json c сервера

Пробую забрать json с сервера для дальнейшей манипуляции и получаю ошибку

124