我正在尝试在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;
谁能告诉我这个名字是什么以及如何正确地做到这一点?
答案 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;