javascript - 用 window[string]() 实例化一个类对象
问题描述
class Unit {
constructor(){
}
}
var str = "Unit";
var a = new window[str](); // error
var b = new window["Unit"](); // error
var u = new Unit(); // works
(u instanceof Unit) // true
我最近才在声明类方面切换到 ES 6 语法。我很确定以前我可以实例化这样的类,但是自从我使用了“类”语法后,windowclassName 对对象的实例化就不再起作用了。
我到底在这里想念什么?
解决方案
用 and 声明的变量的行为与用andclass
声明的变量类似——它们不会被隐式分配给窗口对象(这可以说是一件好事)。如果你想穿上,你必须明确地这样做:const
let
Unit
window
class Unit {
constructor(){
console.log('constructing');
}
}
window.Unit = Unit;
var str = "Unit";
var a = new window[str]();
您可以考虑使用自己的类对象来避免全局污染:
const myClasses = {
Unit: class Unit {
constructor(){
console.log('constructing');
}
}
};
var str = "Unit";
var a = new myClasses[str]();
在声明对象字面量的过程中,对象值不能相互引用 - 要在myClasses
扩展现有类之一的子类上放置子类,您必须在myClasses
声明之外这样做:
const myClasses = {
Unit: class Unit {
constructor(){
console.log('constructing');
}
}
};
myClasses.Child = class Child extends myClasses.Unit {
constructor() {
super();
console.log('Child running');
}
}
var str = "Child";
var a = new myClasses[str]();
推荐阅读
- jenkins - 詹金斯 - 没有方法签名:java.lang.String.getResult()
- python - scrapy 没有将计算的列表作为起始 url,但可以正常使用文本 url
- ruby-on-rails - Sidekiq / Ruby On Rails - 使用 Redis (Redlock) 锁定未正确锁定
- python - 无法使用 pynput 移动我的世界角色
- python - 从一个文件到另一个文件的选择性写入
- asp.net - 在 Linux 服务器上监控来自 ASP.NET 的 HTTP 响应/请求大小
- python - 将RGB分配给投影点python
- javascript - " 在一个字符串中。为什么?
- arrays - 如何解决使用大尺寸静态数组时发生的运行时错误
- java - ReactJS 配置文件