如何遍历node.js模块对象以找到所有属性和方法?

时间:2018-09-24 13:02:21

标签: javascript node.js npm

我想列出属于os Node.js模块的所有属性和方法。一种选择是:

var os = require('os');
Object.keys(os);
Object.getOwnPropertyNames(os);

由于os模块是一个对象,因此我应该能够像访问其他任何对象一样对其进行迭代,以列出其所有属性和方法。但是以下代码将引发错误。请让我知道我在这里想念什么?

for (let i in os) {
    console.log(i + ':'+ os[i])
}
  

TypeError:无法将对象转换为原始值

2 个答案:

答案 0 :(得分:2)

os.constants是具有null原型的对象。因此,由于它上面没有toString方法,因此无法将其转换为原始字符串值。

const o = Object.create(null);

console.log('toString', o.toString);
console.log(o + '');

由于console.log比使用toString更加聪明,因此可以直接使用它:

Object.keys(os).forEach((key) => {
  console.log(key, os[key]);
});

答案 1 :(得分:1)

您的console.log强制节点将对象值转换为字符串:

console.log(i + ':'+ os[i])

您可以尝试不进行串联:

console.log(i, os[i])

所以您不必将obj强制转换为字符串,但是我认为console.dir()是获取您想要查看的信息的好方法。

const os = require('os');
console.dir(os);