這是一個新手查詢。我經歷了幾次類似的帖子,但他們沒有足夠的幫助我。這篇文章有2個查詢,但是我們放在一起,因爲它們的根似乎是一樣的。「this」裏面的javascript函數
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)) ;
時能不指向服務器位置:
我碰到下面的代碼片段來了?
我試圖把一個簡單的測試方法:
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打印[對象的對象] - 它不應該是[對象測試]?
謝謝!
我不知道,但也許那是因爲你在常量是ructor,因此該類尚未被認爲是Test對象?只是一個猜測。 –