实例化动态类

时间:2011-01-04 03:57:25

标签: javascript oop class

在Javascript中,如何在不使用eval()并传入参数的情况下动态实例化新类?例如, 假设我想创建一个新的CatViewController并传入“小猫”,我该怎么做?

var myClassname = "CatViewController";
var cat = new myClassname("kitten");

应该解决:

var cat = new CatViewController("kitten");

谢谢!

2 个答案:

答案 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基于您之前的演示。