Javascript:使用变量作为构造函数名称

时间:2017-06-01 21:54:27

标签: javascript constructor

我需要从另一个函数中获取一个参数,然后将该函数用作对象的新实例的构造函数的名称:

function foo(bar) {
    thing.push(new bar(arg1, arg2);
}

如何创建一个由bar值构成的对象的新实例,其中bar是一个字符串?

2 个答案:

答案 0 :(得分:1)

您可以传递构造函数。



var Bar = function (a1,a2) {
 this.a1 = a1;
 this.a2 = a2;
}

function foo(bar) {
    
    var obj = new bar('arg1', 'arg2');
    console.log(obj.a1);
    console.log(obj.a2);
}

foo(Bar);




答案 1 :(得分:0)

Use eval() if the string is cleaned of malicious code.
function foo ( bar ) { 
//code to check if bar is safe to use

//如果它没有清理或返回;     eval(" thing.push(new" + bar +"(arg1,arg2);");}     这应该工作