javascript – 为什么Object.keys()和…在不同的?

前端之家收集整理的这篇文章主要介绍了javascript – 为什么Object.keys()和…在不同的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试做一些浏览器对象发现,搞清楚浏览器内置等…

当我试图获取窗口对象属性时,我注意到了不同的结果(仅供参考,我使用的是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检查.

原文链接:https://www.f2er.com/js/153490.html

猜你在找的JavaScript相关文章