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 に答える