【问题标题】:how to write an argument-size generic function in javascript?如何在 javascript 中编写参数大小的通用函数?
【发布时间】:2012-09-20 07:00:09
【问题描述】:

在node.js中,一个tcp服务器有如下监听方法:

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

我想创建一个特定于应用程序的服务器,它调用这个较低级别的 tcp 服务器。我想为我的用户提供一个监听方法,它只调用 tcp 服务器的正确监听方法。

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

我可以做这样的事情吗(稍微编造的语法):

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

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    在 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 服务器的监听方法 […]

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

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 2012-01-15
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      相关资源
      最近更新 更多