鑑於這種代碼:在JavaScript中,新操作符是否總是返回新語句中提及的同一類型的對象?
function foo(){
return foo;
}
var bar = new foo();
console.log(bar instanceof foo);
我希望可以將輸出爲 「真」。但是,這是「假」。
爲什麼bar對象不是foo類型的?
另一方面,如果我只是從foo返回一個數字(比如說2),那麼我的輸出結果爲true。
鑑於這種代碼:在JavaScript中,新操作符是否總是返回新語句中提及的同一類型的對象?
function foo(){
return foo;
}
var bar = new foo();
console.log(bar instanceof foo);
我希望可以將輸出爲 「真」。但是,這是「假」。
爲什麼bar對象不是foo類型的?
另一方面,如果我只是從foo返回一個數字(比如說2),那麼我的輸出結果爲true。
當你從構造函數返回一個基元(比如2)時,返回值被忽略。由new創建的對象被返回,就像構造函數沒有返回語句一樣。如果您從構造函數返回對象,則返回對象(注意:函數是Javascript中的對象),無論該對象是否具有構造函數作爲其內部原型。
在你的情況下你正在返回一個函數;該函數是foo,但它不是foo的一個實例。
幾乎是重複的? [JavaScript:'新'如何在內部工作](http://stackoverflow.com/q/6750880/218196) –