我正在尝试进行一些浏览器对象的发现,弄清楚浏览器内置等信息...
我注意到在获取window对象属性时会得到不同的结果(仅供参考,我使用的是Chrome Version 41.0.2272.89 (64-bit))。
Object.keys(window).length;
返回 7 个键。从文档中可以看到,Object.keys() 函数返回对象的可枚举属性。
但是文档还指出,for ... in
循环遍历对象的可枚举属性。然而:
var i = 0;
for (var propertyName in window) {
i++;
}
返回数量为177。
为什么会有不同?它们不应该只返回可枚举属性的计数吗?
for...in
循环遍历原型属性,Object.keys
只遍历自身属性。 - elclanrs