Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.09.2021, 21:51
Аватар для fxobject
Кандидат Javascript-наук
Отправить личное сообщение для fxobject Посмотреть профиль Найти все сообщения от fxobject
 
Регистрация: 01.03.2021
Сообщений: 138

создание объекта по строке
Господа подскажите вариант:
имеем
let nameClass = 'someClass';

есть описание класса
class someClass {
............................
}

нужно по содержимому строки nameClass создать объект
типа
eval('new '+nameClass )......
eval как то не очень хочется. Есть ли какие либо другие варианты?
Ответить с цитированием
  #2 (permalink)  
Старый 22.09.2021, 22:22
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Положить твои классы заранее в объект.
const classes = {
  SomeClass,
  //...
};
//...
new classes[nameClass]();
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 22.09.2021, 22:44
Аватар для fxobject
Кандидат Javascript-наук
Отправить личное сообщение для fxobject Посмотреть профиль Найти все сообщения от fxobject
 
Регистрация: 01.03.2021
Сообщений: 138

так не могу. описание класса загружается динамически. все подобные классы являются производными от некоего базового класса. и подгружаются по мере действий абонента на странице. т.е. создать полный список объектов
const classes = {} - возможности нет.
Ответить с цитированием
  #4 (permalink)  
Старый 22.09.2021, 22:46
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Когда подгружаешь делай в подгружаемом коде classes.SomeClass = SomeClass.
Это единственно адекватное решение.

Иначе фигачь eval всё равно говнокодишь, пофиг уже.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 22.09.2021, 22:47
Аватар для fxobject
Кандидат Javascript-наук
Отправить личное сообщение для fxobject Посмотреть профиль Найти все сообщения от fxobject
 
Регистрация: 01.03.2021
Сообщений: 138

хотя наверное что то типа этого все таки придется сделать. можно чтобы при загрузки описания объекта заполнялся подобный массив.... в общем то это решение лучше чем eval. что то типа виртуального конструктора получили )))
Спасибо
Ответить с цитированием
  #6 (permalink)  
Старый 22.09.2021, 22:55
Аватар для fxobject
Кандидат Javascript-наук
Отправить личное сообщение для fxobject Посмотреть профиль Найти все сообщения от fxobject
 
Регистрация: 01.03.2021
Сообщений: 138

фишка еще в том, что заполнять данный массив classes.SomeClass = SomeClass нужно ДО загрузки скрипта. а после уже делать new. ДО загрузки еще нет описания. по идее выпадет ошибка..... капец. надо думать
Ответить с цитированием
  #7 (permalink)  
Старый 22.09.2021, 23:08
Аватар для fxobject
Кандидат Javascript-наук
Отправить личное сообщение для fxobject Посмотреть профиль Найти все сообщения от fxobject
 
Регистрация: 01.03.2021
Сообщений: 138

на счет говнокода не совсем понятно - откуда такое убеждение?
Ответить с цитированием
  #8 (permalink)  
Старый 22.09.2021, 23:42
Аватар для fxobject
Кандидат Javascript-наук
Отправить личное сообщение для fxobject Посмотреть профиль Найти все сообщения от fxobject
 
Регистрация: 01.03.2021
Сообщений: 138

может кому пригодится - вот получилось такое решение
1 загрузка скрипта
//-первый параметр - маршрут скрипта
// второй параметр - callback при успешной загрузке которому передается строка с именем загружаемого класса.
this.storage.loadScript( supportedHardware[this.switchModel].path,
this.loadScriptHandler.bind(this,supportedHardware[this.switchModel].class) );

2. в самом скрипте - помимо описания класса в конце скрипта
devices['Catalyst-1000'] = Catalyst-1000; - это и есть массив по которому будет создаваться (new) новый объект.

3 и callback при успешной загрузки скрипта
loadScriptHandler( classDescription ){
this.switchObject = new devices[classDescription];
...................................
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание иммутабельной копии объекта Andrew K Библиотеки/Тулкиты/Фреймворки 6 16.11.2019 14:27
canvas, svg или что то еще, создание сайта планировки объекта mmsgold Элементы интерфейса 2 29.11.2017 14:47
DOM создание объекта JQ ~ вопрос реализации состояния Brook Events/DOM/Window 0 21.01.2014 22:45
Странное создание объекта IceBird Общие вопросы Javascript 3 12.06.2010 05:39
Создание копий объекта - обязателен ли prototype? heh131 Общие вопросы Javascript 12 15.05.2010 12:55