如果我有这样的刺痛,"AppNamespace.SomeObject.ClassName"
并且我知道该字符串代表和实际的构造函数,那么在语句中使用它的最佳/推荐方法是var foo = new AppNamespace.SomeObject.ClassName
什么?
我可以做:
var s = "AppNamespace.SomeObject.ClassName"
var foo = new (eval(s))
或类似的东西:
var parts = "AppNamespace.SomeObject.ClassName".split(".")
var foo = new (window[parts[0]][parts[1]][parts[2]])
但我想知道是否有更好的解决方案不涉及eval
或不必拆分字符串并循环遍历其部分。有没有人有任何想法?如果不是,基于我提出的两种解决方案,每种解决方案的优缺点是什么?