1

node.js では、tcp サーバーにはリッスンする次のメソッドがあります。

server.listen(port, [host], [backlog], [listeningListener])
server.listen(path, [listeningListener])
server.listen(handle, [listeningListener])

この下位レベルの tcp サーバーを呼び出すアプリケーション固有のサーバーを作成したいと考えています。TCP サーバーの正しいリッスン メソッドを呼び出すだけのリッスン メソッドをユーザーに提供したいと考えています。

3 つの異なるリッスン メソッドを記述して、それらの引数を 3 つの tcp サーバーのリッスン メソッドに渡すことを回避する方法はありますか? オプションのパラメーターを渡しますか?

このようなことを行うことはできますか (構文を少し作成して):

myapp.listen(args*){
    tcpserver.listen(args*);
}
4

1 に答える 1

2

JavaScript では、関数のすべての引数は、独自の名前を持っているかどうかに関係なく、常に name の下で使用できます。argumentsだからあなたは書くことができます:

myapp.listen(){
    tcpserver.listen.apply(tcpserver, arguments);
}

関数Function.applyを使用しargumentsて、目的のメソッド呼び出しに転送します。


追加するために編集されました:これも明確にする必要があります:

node.js では、tcp サーバーには次のリッスン メソッドがあります […] 3 つの tcp サーバーのリッスン メソッド […]

Node.js のドキュメントで説明されている方法と一致していますが、厳密には正確ではありません。JavaScript には、関数/メソッドのオーバーロードの概念がありません。むしろ、オブジェクトには、最初の引数を調べて実行する「オーバーロード」を決定するServer単一のメソッドがある必要があります。listen

于 2012-09-19T22:47:46.177 に答える