在node.js中,tcp服务器具有以下侦听方法:
server.listen(port, [host], [backlog], [listeningListener])
server.listen(path, [listeningListener])
server.listen(handle, [listeningListener])
我想创建一个特定于应用程序的服务器来调用这个低级别的tcp服务器。我想为我的用户提供一个listen方法,它只调用tcp服务器的正确listen方法。
有没有办法让我避免编写三种不同的listen方法,并将它们的参数传递给三个tcp服务器的listen方法?它会传递可选参数吗?
我可以做这样的事情(稍微用语法构成):
myapp.listen(args*){
tcpserver.listen(args*);
}
答案 0 :(得分:2)
在JavaScript中,all of a function's arguments are always available under the name arguments
,无论他们是否也有自己的名字;所以你可以写:
myapp.listen(){
tcpserver.listen.apply(tcpserver, arguments);
}
使用the function Function.apply
将arguments
转发到所需的方法调用。
编辑添加:我还应该澄清一下,尽管如此:
在node.js中,tcp服务器有以下方法来监听三个tcp服务器的listen方法[...]
与the Node.js documentation describes things的方式一致,并非严格准确。 JavaScript没有任何函数/方法重载的概念;相反,它必须是Server
对象具有单个listen
方法,该方法检查其第一个参数以确定要执行的“重载”。