在 nodejs 中使用变量类名实例化类对象



nodejs 中有没有办法用变量类名实例化类对象。我正在尝试下面的代码片段,但它不起作用。

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

编辑我有多个类,在这些多个类中,我将从另一个服务获得一个子集(字符串数组(作为输入,我必须调用这些子集类的 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(); 
}

与其遍历类名,为什么不遍历类本身呢?

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();

您可以使用窗口尝试此操作

var className = 'hello'
var obj = new window[className];

我认为当你知道如何使用数据结构时,大多数编程问题都会变得容易。在这种情况下,您所需要的只是类名与类本身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();
}

最新更新