在Javascript中,如何在不使用eval()并传入参数的情况下动态实例化新类?例如, 假设我想创建一个新的CatViewController并传入“小猫”,我该怎么做?
var myClassname = "CatViewController";
var cat = new myClassname("kitten");
应该解决:
var cat = new CatViewController("kitten");
谢谢!
答案 0 :(得分:8)
只要该功能在范围内,您就可以这样做:
var cat = new this[myClassname]("kitten");
另一种类似的方式:
var classes = {
A: function (arg) {
},
B: function (arg) {
},
C: function (arg) {
}
};
var a = new classes["A"]("arg");
答案 1 :(得分:0)
@Matthew - 如果您参考了window
范围,那么你应该好好去吧,对吧?只需使用window
引用而不是this
关键字。似乎对我有用。但是,由于我目前在项目中使用它,因此我对这种方法有任何不足感到非常好奇。 Here is a demo基于您之前的演示。