javascript - 为什么我无法在 JavaScript 中获取导航器对象的属性计数?

标签 javascript javascript-objects

在浏览器中运行(ES5+)

var propCount = Object.keys(navigator).length;
console.log(propCount); // 0

如果你对这样的普通对象这样做

let obj = {
    foo: 'bar',
    breaking: 'bad'
}

let propCount = Object.keys(obj).length;

console.log(propCount); // 2

为什么会这样?

很抱歉,如果它可能与另一个问题有关,例如当 Object.keys(obj) 仅针对不包含 functions/arrays 的简单对象计算它时,但这我第一次遇到它。

并想知道其中的原因。

最佳答案

Object.keys() 函数返回直接分配给它的对象的属性。如果您执行以下操作:

console.log(navigator.hasOwnProperty('permissions')); // false

如果您想查看导航器的属性,请执行以下操作:

for(let i in navigator){
    console.log(i);
}

它将列出 navigator 对象的所有属性,因为 for ... in ... 循环包括对象的原型(prototype)。

关于javascript - 为什么我无法在 JavaScript 中获取导航器对象的属性计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37229784/

相关文章:

javascript - 计算html元素并除以100

javascript - .on 更改功能第一次起作用而不是第二次起作用?

javascript - 如何使用 ng-options 遍历对象中的数组?

javascript - JS 比较两个对象数组,并排除匹配值的元素到新数组中

javascript - 根据外部ID在javascript中对数组进行排序

javascript - 将月份添加到日期时刻 js

php代码中的javascript变量

javascript - 当 JavaScript 中的 forEach 或循环提供值时,条件执行

javascript - Javascript 中数组与对象的实例化。什么时候数组是对象,什么时候获取数组的方法?

javascript - 合并对象并返回压缩范围对象