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' ]
>
クール。それは動作します。 http.Server
さて、Node.jsのは、サーバー側のプログラミングについての詳細であることから、同じことは、Node.jsのための例のほぼすべてのシングル「Hello World」の形で使用される一般的なクラスのために動作するかどうかを見てみましょう
のは、同じことを試してみましょう:
> 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)は単にリストに別の「公式」の方法がありますいくつかのクラスではなく、他人のためにすべての方法を示しているようだ、と...そのようなリストを取得するためにAPI docsを読み込むことなく、Node.js内のオブジェクトに利用可能な関数はありますか?
'getOwnPropertyNames'にはありません。プロトタイプツリーに登るすべての継承プロパティを取得するには、 'for..in'ループを使用します。 – 4castle
よろしくお願いいたします。コマンドラインで動作する簡単な例を教えてもらえますか? 'prototype'属性をループしますか? –