列表窗口对象的所有属性?(List all properties of window object?

2019-06-24 01:10发布

我期待(动态)获得HTML元素的浏览器是目前知道的,如清单HTMLPreElementHTMLSpanElement等,这些对象是全球性的,即

console.log('HTMLPreElement' in window);  //=> true

所以,我想我能够使用getOwnPropertyNames这样的:

console.log(Object.getOwnPropertyNames(window));

获得全球性的完整列表(MDN指出,这同时返回可枚举和不可枚举属性)。

使用上面,我得到约70性质nanes的数组。 但是,这并不包括类似的对象HTMLPreElement -只有HTMLElement 。 我也尝试:

console.log(Object.getOwnPropertyNames(window.Window.prototype));

其带回一个更大的清单(包括addEventListener等),但是也没有HTMLPreElement

所以,在这里到底做这些HTML{Tag}Element对象驻留?

Answer 1:

在Firefox中,这似乎是他们的全球对象未添加,除非明确要求为全局变量或属性元素的行为。 也许Firefox的延迟加载他们到环境中,这样,除非他们真正需要的,他们不占用内存。

他们似乎不显示时,只是要求通过全局对象的键Object.getOwnPropertyNames 除非他们首先已经明确上述引用。

http://jsfiddle.net/mBAHm/



Answer 2:

for (var prop in window)
    console.log(prop);

这就是你需要什么?



Answer 3:

var obj = window;
while(obj){
    for(let prop of Reflect.ownKeys(obj)){
        console.log(prop);
    };
    obj = Object.getPrototypeOf(obj);
};


文章来源: List all properties of window object?