在nodejs中实例化具有变量类名的类对象

时间:2018-01-13 10:50:34

标签: javascript node.js class oop

nodejs中是否有一种方法可以使用变量类名实例化类对象。我正在尝试下面的代码片段,虽然它不起作用。

let className = "hello"; 
let object = new [className]();

EDITED 我有多个类,在那些多个类中,我将得到一个子集(String of String)作为来自另一个服务的输入,我必须调用那些子类的main函数。

// Multiple classes = ["first", "second", ..............., "twenty"]; 

let subset_class_names = ["first", "three", "five"]; 

for (let aClass of subset_class_names) { 
    let object = new [aClass](); 
    object.main(); 
}

3 个答案:

答案 0 :(得分:1)

您可以使用窗口

尝试此操作
var className = 'hello'
var obj = new window[className];

答案 1 :(得分:1)

为什么不迭代类本身而不是遍历类名呢?



class One {
  constructor(){
    console.log("One constructed");
  }
}


class Two {
  constructor(){
    console.log("Two constructed");
  }
}

const classes = [One, Two];

for(const aClass of classes)
  new aClass();




答案 2 :(得分:0)

我认为当您知道如何使用数据结构时,大多数编程问题都会变得很容易。在这种情况下,您只需要一个Map类名称即可。

class One {
  constructor(){
    console.log("One constructed");
  }
}


class Two {
  constructor(){
    console.log("Two constructed");
  }
}

class Three {
  constructor(){
    console.log("Three constructed");
  }
}


const classes = new Map()
classes.set("one", One);
classes.set("two", Two);
classes.set("three", Three);

let subset_class_names = ["one", "two"]; 

for (let aClass of subset_class_names) {
  const theClass = classes.get(aClass);
  if (theClass) new theClass();
}