【发布时间】:2018-03-16 09:25:17
【问题描述】:
这可能是一个愚蠢的问题,但我四处寻找,一无所获。
我有一个代码:
class A {}
let className = 'A';
我需要检查className 是否对应于现有的类。
这都不在全局范围内,并且在 node.js 中运行,所以我不能使用window
我知道以下方法会起作用:
eval(`typeof ${className} === 'function'`);
但是我有点不愿意使用eval(而且 linter 也抱怨它)
此外,我还需要将类实例化为一个变量,我可以再次使用 eval 像这样:
let ctor = eval(className);
let object = new ctor();
但这又使用了 eval。
有没有其他方法可以实现这些?
【问题讨论】:
-
类不在全局范围内吗?这个类是另一个类或作用域的私有成员吗?
-
@gurvinder372 这不在全局范围内,它在一个模块中
-
如果它没有从那个模块中暴露出来,那么你打算如何首先到达它?
-
@gurvinder372 我可能误解了你的初衷。是的,它在一个模块中,但检查字符串是否是该模块中可见的类的代码也是如此
-
如果不是eval,那么你可以使用
Function构造函数,它不会立即计算函数体。