3

我正在探索 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 文件,但似乎找不到它。

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

4

2 回答 2

4

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

它只是一个在文件中声明较低的函数,由于函数提升,这在 javascript 中是可以的。

于 2013-08-19T17:42:55.683 回答
4

它在net.js. 从 0.11.5 开始,它位于第 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;
  }

  // ...
}
于 2013-08-19T17:43:02.957 回答