动态创建javascript new运算符

时间:2016-03-21 06:20:39

标签: javascript oop object

我有两个函数nameFuncOnenameFuncTwo,我在我的代码中表示。

this.mainFunction = function() {
    this.someFunc = function() {
    return this.name;
  }
};

this.nameFuncOne = function() {
    this.name = "nameOne";
    mainFunction.call(this);
};
this.nameFuncTwo = function() {
    this.name = "nameTwo";
    mainFunction.call(this);
};
var one = new nameFuncOne();
var two = new nameFuncTwo();
console.log(one.someFunc() + "  " + two.someFunc());

所以我在这里做的是将构造函数 nameFuncOne nameFuncTwo 分配到变量onetwo中。所以为什么我不能创造这样的东西。

var funcArr = ["new nameFuncOne()", "new nameFuncTwo()"];
var arr = [];
for (var i=0;i<funcArr.length; i++) {
    arr[i] = funcArr[i];
  //console.log(arr[i].someFunc())
}

我的问题是我不想手动创建变量。有没有办法做到这一点。如果我出错了,请纠正我。

1 个答案:

答案 0 :(得分:1)

是的,你可以这样做,但你的代码有问题。将string存储到数组中。

试试这个,

var funcArr = ["new nameFuncOne()", "new nameFuncTwo()"];
var arr = [];
for (var i=0;i<funcArr.length; i++) {
    arr[i] = eval(funcArr[i]);
     console.log(arr[i].someFunc())
}

eval()函数评估表示为字符串的JavaScript代码。 LINK

另一种方式:

var funcArr = [new nameFuncOne(), new nameFuncTwo()];
    var arr = [];
    for (var i=0;i<funcArr.length; i++) {
        arr[i] = funcArr[i];
         console.log(arr[i].someFunc())
    }