JavaScript变量的新对象

时间:2018-05-22 21:29:47

标签: javascript node.js ecmascript-6

我正在尝试在Javascript / node.js中实现多态。我正在尝试做点什么,但我不确定它叫什么,所以我甚至不确定我在寻找什么。

我有许多不同的ES6类,它们可以互换并且具有相同的接口。我正在尝试创建一个可扩展且可插入的系统,因此在设计时不会知道可用的类。

我想要一个变量来定义我想要创建实例的类的名称。因此,我希望有以下内容:

class Foo { }
class Bar { }

var classToLoad = "Foo";

var myFoo = new classToLoad;   // I want this to be equivalent to new Foo;

var classToLoad = "Bar";
var myBar = new classToLoad;   // I want this to be equivalent to new Bar;

谁能告诉我这个名字是什么以及如何正确地做到这一点?

2 个答案:

答案 0 :(得分:3)

应该有一个容器来按类名识别类。请注意,可能有多个同名的类,并且在客户端脚本中缩小了函数/类名。

class Foo { }
class Bar { }

const container = { Foo, Bar };

let classToLoad = "Foo";

let myFoo = new container[classToLoad]();

答案 1 :(得分:0)

这可能有所帮助:

var Foo = class Foo { }
var Bar = class Bar { }

var classToLoad = "Foo";

var myFoo = new window[classToLoad]();   // I want this to be equivalent to new Foo;

var classToLoad = "Bar";
var myBar = new window[classToLoad]();   // I want this to be equivalent to new Bar;