javascript - Node net.js 服务器()

标签 javascript node.js

我检查了net.js中的createServer()函数:

exports.createServer = function() {
return new Server(arguments[0], arguments[1]);
};

我查看了net.js中Server()函数的源码,发现

function Server(/* [ options, ] listener */) {
  if (!(this instanceof Server)) return new Server(arguments[0], arguments[1]);
  events.EventEmitter.call(this);

  var self = this;
  // ......
}

当我们调用createServer()函数时,该函数将调用new Server()。而在 Server() 函数内部,由于 this 不是 Server 的实例,因此它会再次调用 new Server() 。根据我的理解,new Server()函数会陷入无限循环,因为它不断调用new Server()。有人可以解释一下我这里错了什么吗?

如果 Quentin 是对的,那么 if 语句永远不会为 true,因为 new Server() 已在 createServer() 函数中调用。

最佳答案

return new Server语句之前有一个if语句。

看起来它是为了从调用 Server 函数的人们那里恢复,而不用作为构造函数(即使用 new)。

关于javascript - Node net.js 服务器(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21582124/

相关文章:

javascript - 如何在运行下一个代码之前等待异步 JSZip .forEach() 调用完成?

javascript - 如果使用 AND 查询失败但使用 OR 则有效

javascript - 使用 Handlebars 在网页上显示nodejs查询结果?

node.js - 单引号在 package.json 中不起作用

javascript - 如何使用 N-API 将 BigInt 类型从 C++ 返回到 javascript?

javascript - 禁用表单默认行为 rails

javascript - 谷歌地图 setCenter 在 IE8 中不工作

javascript - 如何使用 webpack 在项目中设置多个文件输入和输出?

node.js - 在 React JS 中存储 API 根 Url 的最佳位置是什么?

Javascript 按具有多种含义的对象值(组)仅使用比较器进行排序