如何在javascript中编写参数大小的泛型函数?

时间:2012-09-19 22:42:28

标签: javascript node.js

在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*);
}

1 个答案:

答案 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.applyarguments转发到所需的方法调用。


编辑添加:我还应该澄清一下,尽管如此:

  

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

the Node.js documentation describes things的方式一致,并非严格准确。 JavaScript没有任何函数/方法重载的概念;相反,它必须是Server对象具有单个listen方法,该方法检查其第一个参数以确定要执行的“重载”。