我希望在定义内部类之前设置窗口变量,因此我编写以下代码
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不知道应该分配什么。