我需要从DOM Window对象中获取属性。
我不想单独访问它们,例如
var x = window.innerWidth;
有没有办法在不获取许多Window对象方法的情况下获取属性?
如果你能想象,就像这样:
var props = window.properties; // contains all the Window object properties
感谢。
答案 0 :(得分:1)
您可以获取对象的所有自己的可枚举属性,包括window
和Object.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] );
}
}