Node.js中定义的`listen`函数在哪里?

时间:2013-08-19 17:38:41

标签: javascript node.js

我在寻找Node.js内部,我遇到了以下方法定义

//File: node/lib/net.js
Socket.prototype.listen = function() {
  debug('socket.listen');
  var self = this;
  self.on('connection', arguments[0]);
  listen(self, null, null, null);
};

在Socket对象的listen方法中,调用一个(看似)全局函数,也称为listen

listen(self, null, null, null);

这个javascript方法/函数定义在哪里?我已经搜索了代码库中的所有javascript文件,似乎无法找到它。

(除了跟踪节点的执行路径并试图理解系统深处使用的模式之外,我没有在这里尝试完成特定的任务。)

2 个答案:

答案 0 :(得分:4)

https://github.com/joyent/node/blob/b80d11d46b3b2abff1cf1fe887971ea50fd7d497/lib/net.js#L1088

这只是一个在文件中声明较低的函数,由于函数提升而在javascript中正常。

答案 1 :(得分:4)

它在net.js中定义得更远。截至0.11.5,it's at line 1089

function listen(self, address, port, addressType, backlog, fd) {
  if (!cluster) cluster = require('cluster');    

  if (cluster.isMaster) {
    self._listen2(address, port, addressType, backlog, fd);
    return;
  }

  // ...
}