Javascript"班级"用class关键字声明似乎不会出现在window对象中。我试图通过名称找到一个类对象,例如window['A']
。
<html><head><script type='text/javascript'>
function A() {}
console.log(A) // outputs function A
console.log(window.A) // same
console.log(window['A']) // same
class B {}
console.log(B) // outputs class/function B
console.log(window.B) // undefined
console.log(window['B']) // undefined
</script></head></html>
我在Chrome 52.0.2743.116和Firefox Developer 50.0a2(2016-08-27)中都有这种行为。
查看MDN article on the class keyword,它提到此类声明并未被提升并且#34;像函数声明一样,但这似乎是一个不同的问题。我查看了the specs但据我所知,这应该像一个函数。 (&#34; 7.让env成为正在运行的执行上下文的LexicalEnvironment.8。让状态为InitializeBoundName(className,value,env)。&#34;似乎是相关点)
有谁知道这是一个错误还是我错过了什么,这是设计的?如果是这样,是否有其他方式通过它的声明名称获得课程?