如何在JavaScript中写一个参数大小的通用函数?

在node.js中,tcp服务器有以下方法来侦听:

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

我想创build一个应用程序特定的服务器,它调用这个较低级别的tcp服务器。 我想给我的用户提供一个listen方法,它只是调用一个tcp服务器的正确的listen方法。

有没有办法让我避免写三种不同的侦听方法,并将它们的parameter passing给三个tcp服务器的侦听方法? 它会传递可选参数吗?

我可以做一些这样的事情(稍作修改):

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

在JavaScript中, 函数的所有参数总是在名称arguments下可用 ,无论它们是否也有自己的名字; 所以你可以写:

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

使用函数Function.applyarguments转发到所需的方法调用。


编辑补充:我也应该澄清一下,虽然这样:

在node.js中,tcp服务器有以下方法来侦听三个tcp服务器的侦听方法[…]

与Node.js文档描述的方式一致,并不严格准确。 JavaScript没有任何函数/方法重载的概念; 相反,它必须是一个Server对象有一个单一的listen方法,检查其第一个参数,以确定执行“过载”。