我正在尝试使用命令行找到一个干净,简单的方法来简单地获取Node.js中类的可用函数列表。
根据之前的网络搜索,我偶然发现Object.getOwnPropertyNames()
,但似乎此功能不一致,或者我不明白为什么它适用于某些课程而不适用于其他课程。
让我们通过一个例子,也许有人可以提供帮助。目前,节点-v为此示例输出v4.4.5。
首先,假设我想获得Math类的函数列表。从节点控制台,这很好用,我得到:
[root@localhost /]# node
> Object.getOwnPropertyNames(Math)
[ 'E',
'LN10',
'LN2',
'LOG2E',
'LOG10E',
'PI',
'SQRT1_2',
'SQRT2',
'random',
'abs',
'acos',
'asin',
'atan',
'ceil',
'exp',
'floor',
'log',
'round',
'sqrt',
'atan2',
'pow',
'max',
'min',
'imul',
'sign',
'trunc',
'tanh',
'asinh',
'acosh',
'atanh',
'hypot',
'fround',
'clz32',
'cbrt',
'cos',
'sin',
'tan',
'sinh',
'cosh',
'log10',
'log2',
'log1p',
'expm1' ]
>
冷却。这很有效。
现在,由于Node.js更多的是关于服务器端编程,让我们看看同样的东西是否适用于几乎每个单独的#34; hello world" Node.js的示例类型:http.Server
让我们尝试同样的事情:
> Object.getOwnPropertyNames(http.Server)
[ 'length', 'name', 'prototype', 'super_' ]
嗯....将此与文档here相比较,似乎缺少server.close()
,server.listen()
等基本内容。进一步查看文档,这个类是net.Server
的子类,所以也许我必须查看该类的方法。让我们看看是否有效:
> Object.getOwnPropertyNames(net.Server)
[ 'length', 'name', 'prototype', 'super_' ]
嗯......如果我们与net.Server的文档进行比较,我们就会错过server.address()
,server.getConnections()
等基本功能。
任何人都可以帮助我理解:
(a)为什么getOwnPropertyNames
似乎显示某些类的所有方法而不显示其他类,并且......
(b)是否有另一位官员'简单地列出Node.js中对象的可用函数的方法,而不必阅读API文档来获得这样的列表?
答案 0 :(得分:0)
如果您查看getOwnPropertyNames
的{{3}},您会看到:
如果只想要可枚举的属性,请参阅Object.keys()或使用for ... in循环(尽管请注意,这将返回直接在该对象上找不到的可枚举属性,但也沿着原型链返回用于对象,除非使用hasOwnProperty()过滤后者。
这说的是getOwnPropertyNames()
& Object.keys()
只返回对象本身的可枚举属性,并且不会向您提供有关对象原型的任何信息。
所以似乎没有内置函数来实现你想要的东西,所以你必须自己编写代码。例如:
for (var prop in obj) {
console.log('obj.' + prop + ' = ' + obj[prop]);
}
注意:您可以创建自己的实用程序库,包含此想法,以便将其包含在要运行它的任何项目中。