Gra*_*ham 9 javascript prototype properties window
我正在寻找(动态)获取浏览器当前知道的HTML元素列表,例如HTMLPreElement
,HTMLSpanElement
等等.这些对象是全局的,即
console.log('HTMLPreElement' in window); //=> true
Run Code Online (Sandbox Code Playgroud)
所以我以为我可以getOwnPropertyNames
像这样使用:
console.log(Object.getOwnPropertyNames(window));
Run Code Online (Sandbox Code Playgroud)
获取全局属性的完整列表(MDN声明它返回可枚举和不可枚举的属性).
使用上面的内容,我得到一个包含大约70个属性nanes的数组.但是,它不包括像HTMLPreElement
- 仅限的对象HTMLElement
.我也尝试过:
console.log(Object.getOwnPropertyNames(window.Window.prototype));
Run Code Online (Sandbox Code Playgroud)
它带回了一个更大的列表(包括addEventListener
等)但是再次,没有HTMLPreElement
.
那么,这些HTML{Tag}Element
物体驻留在哪里?
小智 5
在Firefox中,除非明确要求将其作为全局变量或属性,否则似乎未添加其全局对象就是元素的行为。也许Firefox会懒惰地将它们加载到环境中,以便除非真正需要它们,否则不会消耗内存。
看起来,当仅通过简单地请求全局对象的键时,它们不会出现,Object.getOwnPropertyNames
除非如上所述首先对其进行了明确的引用。
归档时间: |
|
查看次数: |
13568 次 |
最近记录: |