Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态创建javascript新操作符_Javascript_Oop_Object - Fatal编程技术网

动态创建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());
因此,这里我所做的是将构造函数nameFuncOnenameFuncTwo赋给变量
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())
    }