我正在嘗試使用命令行來簡單地獲取Node.js中某個類的可用函數列表。獲取Node.js中某個類的可用函數列表
基於以前的網絡搜索,我偶然發現了Object.getOwnPropertyNames()
,但它看起來這個函數是不一致的,否則我不明白爲什麼它適用於某些類而不適用於其他類。
讓我們通過一個例子來工作,也許有人可以提供幫助。目前,本例中節點-v輸出v4.4.5。
首先,假設我想獲得Math類的函數列表。從節點控制檯,這工作得很好,我得到:
[[email protected] /]# 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的更多的是服務器端編程,讓我們來看看,如果同樣的事情,工作對於在幾乎每一個「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()
等。
誰能幫我明白了:
(一)爲什麼getOwnPropertyNames
似乎表明所有對於某些類的方法,但不是別人,... (b)是有另一種「官方」的方式來簡單地名單Node.js中的對象的可用函數,而無需讀取API文檔以獲取這樣的列表?
'getOwnPropertyNames'不爬上原型樹。使用'for..in'循環來獲取所有繼承的屬性。 – 4castle
好的謝謝。你能給我一個可以在命令行上工作的快速例子嗎?我會循環通過'prototype'屬性嗎? –