这是一个新手查询。我经历了几篇类似的帖子,但它们对我的帮助还不够。这篇文章有 2 个查询,但因为它们的根似乎相同,所以将它们放在一起。
我遇到了以下代码片段:
var Server = module.exports.Server = function Server(listener) {
if (!(this instanceof Server)) return new Server(listener);
//other code
}
module.exports.createServer = function(listener) {
return new Server(listener);
};
我无法理解 if (!(this instanceof Server)) ;
this 什么时候不能在这里指向 Server 的使用?
我尝试对此进行快速测试:
var createTest = function(){
console.log(this.toString());
return new Test();
};
var Test = function Test(){
console.log(this instanceof Test);
console.log(this.toString());
if (!(this instanceof Test))
{
return new Test();
}
}
var tester = createTest();
输出:
[object global]
true
[object Object]
这进一步让我困惑为什么 this.toString 打印 [object Object] - 它不应该是 [object Test] 吗?
谢谢 !