Chrome中的for循环中会出现不可枚举的属性

时间:2012-08-27 17:18:11

标签: javascript google-chrome

for - in循环将遍历对象的所有可枚举属性,甚至是原型链中的那些属性。函数hasOwnProperty可以过滤掉原型链中的可枚举属性。最后,函数propertyIsEnumerable可以区分对象的可枚举属性。

因此,以下脚本不应打印任何内容

for(a in window)
    if(window.hasOwnProperty(a) && !window.propertyIsEnumerable(a))
        console.log(a);

但是,在Chrome上,上面会打印很多的属性名称。

为什么for - in循环和propertyIsEnumerable互相矛盾?

1 个答案:

答案 0 :(得分:0)

Chrome非常奇怪:

for(a in window)
    if(window.hasOwnProperty(a) && window.propertyIsEnumerable(a))
        console.log(a);

它提供了大约30个属性,相比之下,与450相反,在chrome中。