如何仅从DOM Window对象获取属性? (不单独指定)

时间:2016-02-15 12:25:29

标签: javascript dom

我需要从DOM Window对象中获取属性。

我不想单独访问它们,例如

var x = window.innerWidth;

有没有办法在不获取许多Window对象方法的情况下获取属性?

如果你能想象,就像这样:

var props = window.properties; // contains all the Window object properties

感谢。

2 个答案:

答案 0 :(得分:1)

您可以获取对象的所有自己的可枚举属性,包括windowObject.keys

Object.keys(window)

然后只过滤类型

Object.keys(window).filter(function(x) {
    return typeof window[x] !== 'function';
});

如果您还需要原型链中的属性,则可以改为使用for...in循环。

Object.keys(window).filter(function(x) {
    // exluding properties that would throw an error here
    return ['frame', 'cache'].indexOf(x) === -1 ||
           typeof window[x] !== 'function';
}).forEach(function(y) {
    document.body.innerHTML += y + '<br>';
});

分配给新变量

var obj = {};

Object.keys(window).filter(function(x) {
    return typeof window[x] !== 'function';
}).forEach(function(y) {
    obj[y] = window[y];
});

答案 1 :(得分:0)

  

有没有办法获得属性而不会得到   很多Window对象方法?

假设您只想获取属性而不是方法 - 您可以检查typeof以查看属性值是否为function类型

for ( var propName in window )
{
   if ( ( typeof window[propName]) != "function")
   {
      console.log( window[propName] );
   }
}

很多这些值都是null,所以你可以引入一个额外的检查

for ( var propName in window )
{
   if ( window[propName] && ( typeof window[propName]) != "function")
   {
      console.log( window[propName] );
   }
}