我正在尝试做一些浏览器对象发现,搞清楚浏览器内置等…
当我试图获取窗口对象的属性时,我注意到了不同的结果(仅供参考,我使用的是Chrome版本41.0.2272.89(64位)).
Object.keys(window).length;
返回7个键.从文档Object.keys()返回对象的可枚举属性.
但是文档也说…在迭代对象的可枚举属性时.然而:
var i = 0; for (var propertyName in window) { i++; }
返回177的计数.
解决方法
for-in
遍历对象自己的可枚举属性及其原型(及其原型等)的可枚举属性.
Object.keys
仅列出对象自己的可枚举属性.
所以Object.keys构建一个这样的数组:
var keys = []; var key; for (key in object) { if (object.hasOwnProperty(key)) { keys.push(key); } }
注意hasOwnProperty检查.