如何使用javascript将类名作为变量传入

时间:2012-11-07 15:57:19

标签: javascript

如何使用javascript将类名作为变量传递?

假设我有班级人员。

我想将类的名称传递给一个函数,以便该函数可以调用该类。

所以功能是

function openClass(name)

我想传入

openClass('person')

这样openClass就可以调用类人

例如

function openClass(name)
{
    return new name() // here I want this line to actually 
                      // call the class "Person" if that is 
                      // what is passed in as a name parameter,

}

4 个答案:

答案 0 :(得分:7)

从技术上讲,JavaScript中没有类。虽然许多第三方库确实在JavaScript之上创建了一个类系统。

“class”通常是构造函数。因此,如果您拥有该功能的名称,则需要将其从全局范围中挖掘出来。假设函数是全局定义的:

var Constructor = window[name];
return new Constructor();

如果您的函数实际上是在my.namespace.Person处定义的,那么它有点复杂,但仍然是一般的想法。

答案 1 :(得分:3)

你可以做到

function openClass(name) {
    return new window[name]();
}

Demonstration(打开控制台)

当然,如果你没有将你的类声明为全局函数但是在特定的对象或数组中,只需用这个对象或数组替换窗口。

答案 2 :(得分:2)

您只需传递该类的构造函数即可。因此,如果该类是Person,则它将具有构造函数

var Person = function(){
    //...
}

you can pass that in to getClass as an argument

var getClass = function(constructor){
    return new constructor()
};

var newObject = getClass(Person);

答案 3 :(得分:-3)

只需致电openClass(Person)

Person函数传递给openClass,可以正常调用它。

如果您真的需要将其作为字符串传递,那么您可以按名称查找Person函数:

window[name]