动态创建javascript新操作符
我在代码中表示了两个函数动态创建javascript新操作符,javascript,oop,object,Javascript,Oop,Object,我在代码中表示了两个函数nameFuncOne和nameFuncOne this.mainFunction = function() { this.someFunc = function() { return this.name; } }; this.nameFuncOne = function() { this.name = "nameOne"; mainFunction.call(this); }; this.nameFuncTwo = function
nameFuncOne
和nameFuncOne
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())
}
var funcArr=[“new nameFuncOne()”,“new nameFuncOne()”];
var-arr=[];
对于(var i=0;i是的,您可以这样做,但代码中存在问题。您将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())
}
var funcArr=[“new nameFuncOne()”,“new nameFuncOne()”];
var-arr=[];
对于(var i=0;i可能重复的No这并不能解决我的问题是eval是个坏主意,它会打开代码进行注入攻击。但您将字符串存储在数组中,因此必须执行它。
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())
}