Учитывая следующий код:
class MyClass {}
Есть ли способ получить конструктор MyClass
из строки, MyClass
?Я ищу что-то аналогичное .NET Assembly.GetType .
Вариант использования:
Пользователь продукта создает свои собственные классычерез некоторую расширяемость;и эти классы должны быть в состоянии загружаться из глобальной области видимости продуктом, когда продукту дается имя данного класса.
Я понимаю, что в большинстве случаев это, вероятно, будет ужасный шаблон проектирования, в котором отсутствует инкапсуляция, но тем не менее мне любопытно, возможен ли такой тип отражения в любой версии ECMAScript.Чтобы обойти эту проблему, нужно, чтобы каждый класс «регистрировался» сам, используя вспомогательную функцию (или декоратор класса!) Из основного продукта.
PS
Iобратите внимание, что хотя объявления функций изменяют глобальную область видимости, определения классов не делают:
function hithere() {}
globalThis["hithere"] // hithere(){}
class hithere {}
globalThis["hithere"] // undefined