我如何从元素获取窗口属性

时间:2016-10-30 17:20:04

标签: javascript

<body>
<h1 id="a">Site 3</h1>

<script>

var arr = []

for(var i in window)
{
    arr.push(i) 
}
console.log("a" in window)// true
console.log(arr)// dont have property a why?!
</script>

</body>

但是当我运行console.log(arr)时,我没有数组,为什么?

1 个答案:

答案 0 :(得分:2)

things accessible on window不一定是window的“拥有”属性,并且(这是重要位)不是必需的可枚举for-in仅访问可枚举的属性(“拥有”和继承)。

例如,在Chrome上,自动a全局是window原型原型的属性,并且标记为不可枚举:

var o = window;
var where = "window"
while (o && !Object.getOwnPropertyDescriptor(o, "a")) {
  where = "prototype of " + where;
  o = Object.getPrototypeOf(o);
}

console.log(where);
console.log(Object.getOwnPropertyDescriptor(o, "a"));
<div id="a"></div>

看起来它在Firefox上的位置相同。

只要in有效并且window.a有效,就无法确定如何实现命名访问的确切语义。