javascript - 如何通过字符串名称创建类的实例?我也尝试将 `window` 用于这些目的。

标签 javascript

<分区>

JS6, 浏览器

如何通过字符串名称创建类的实例?例如我有一个字符串 Foo 并且我需要创建一个 Foo 类的实例。我不想写这样的结构:

let className = getClassName(); // returns 'Foo', `Stuff` or other
...
let item = null;

if(`Foo` == className){
  item = new Foo();
}
else if(`Stuff` == className){
  item = new Stuff();
}

UPD

我试图通过 window 对象访问我的类构造函数,但我遇到了问题:它返回 undefined。但是我的类存在并且浏览器知道它:

enter image description here

最佳答案

在我看来,你正在尝试做的就是你应该做的。这是在运行时已知对象类型时实例化对象的标准方法,称为工厂方法模式。

您应该避免在代码中的任何地方重复此操作,方法是使用将封装对象创建的工厂对象。这个工厂对象将有一个将类型名称作为参数的方法。

关于javascript - 如何通过字符串名称创建类的实例?我也尝试将 `window` 用于这些目的。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45432494/

相关文章:

javascript - 由于Firefox中的正则表达式组无效,导致正则表达式重写

javascript - 如何保存带有webkit-filter效果的html5视频元素?

javascript - Google map 未按预期工作

javascript - 使用 d3.layout.stack() 从图层访问自定义坐标

javascript - 打印网页时在每个打印页面的底部添加文本页脚

javascript - 在哪个范围内声明一个对象以便在单个函数中重复使用

javascript - 无法使用 JavaScript 在 iphone 上播放声音但可以在 Android 上播放

javascript - 在没有 jQuery 的动态元素上单击事件

javascript - jQuery Treeview 插件的“全部折叠”问题

javascript - Jquery 将值数组添加到 json 对象