js 使稍后获取窗口变量;在调用此 var 之前不要初始化 var



我希望在定义内部类之前设置窗口变量,因此我编写以下代码

Object.assign(window, {
get C2() {
return C
}
})
class C {
}
new C2()

但是它引发Uncaught ReferenceError: Cannot access 'C' before initialization,我知道把类C def放在对象之前。Assign可以修复这个错误,但我困惑的是为什么下面的代码不能得到

Object.assign(window, {
get C2() {
return C
}
})

您命名的C类实际上在您调用Object.assign时被引用,创建的get C2()属性包含对C的引用,必须在调用Object.assign时知道。

如果C类名在Object.assign被调用时不知道,那么JS不知道应该分配什么。

最新更新