我想列出属于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:无法将对象转换为原始值
答案 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);