给定一个字符串classname
,我想动态创建一个以该字符串命名的新 JavaScript 函数,该函数可用于实例化对象。
我试过使用eval()
,但由于某种原因,声明的函数没有出现在全局(窗口)范围内。
eval( "function " + classname + "() {}" );
window[ classname ]; // => undefined
有没有办法可以动态创建一个以字符串命名的新函数?
或者,或者,在通过eval
. 有趣的是,当我在 Safari 中调试它时,它显示为一个局部变量。
更新:
知道了!当然很明显,我只是eval
再次使用来创建实例:
var myInstance = eval( "new " + classname );
myInstance.constructor.name; // => classname (yay)
这应该适用于我的情况,因为我只需要在声明后立即创建该类的一个实例。对于一般情况,请参阅 Pointy 的答案。