我检查了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/