Как получить конструктор класса ES6 из имени класса? - PullRequest
0 голосов
/ 23 сентября 2019

Учитывая следующий код:

class MyClass {}

Есть ли способ получить конструктор MyClass из строки, MyClass?Я ищу что-то аналогичное .NET Assembly.GetType .

Вариант использования:

Пользователь продукта создает свои собственные классычерез некоторую расширяемость;и эти классы должны быть в состоянии загружаться из глобальной области видимости продуктом, когда продукту дается имя данного класса.

Я понимаю, что в большинстве случаев это, вероятно, будет ужасный шаблон проектирования, в котором отсутствует инкапсуляция, но тем не менее мне любопытно, возможен ли такой тип отражения в любой версии ECMAScript.Чтобы обойти эту проблему, нужно, чтобы каждый класс «регистрировался» сам, используя вспомогательную функцию (или декоратор класса!) Из основного продукта.

PS

Iобратите внимание, что хотя объявления функций изменяют глобальную область видимости, определения классов не делают:

function hithere() {}
globalThis["hithere"] // hithere(){}
class hithere {}
globalThis["hithere"] // undefined
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...