我有两个函数nameFuncOne
和nameFuncTwo
,我在我的代码中表示。
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 分配到变量one
和two
中。所以为什么我不能创造这样的东西。
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())
}
我的问题是我不想手动创建变量。有没有办法做到这一点。如果我出错了,请纠正我。
答案 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())
}