所以我遇到了一個問題,我嘗試創建一個返回自身的函數的新實例。但我不能那樣做。我完全沒有得到它。希望在這裏得到一些解釋。以下是代碼:無法形成自己返回的函數的新實例
function f(){ return f; }
new f() instanceof f; //returns false - should return true as per my knowledge
感謝您關注它。
所以我遇到了一個問題,我嘗試創建一個返回自身的函數的新實例。但我不能那樣做。我完全沒有得到它。希望在這裏得到一些解釋。以下是代碼:無法形成自己返回的函數的新實例
function f(){ return f; }
new f() instanceof f; //returns false - should return true as per my knowledge
感謝您關注它。
您不想返回任何內容(當調用普通函數調用時,將使用new
和undefined
調用時返回this
)。類定義已更改爲大寫字母F,因爲javascript中的對象應以大寫字母開頭,表示需要使用new
調用它們。
var F = function() {};
var f = new F();
你應該完全省略構造函數的'return'。 – Bergi
謝謝!你是對的。如果對象構造函數使用'return this',那麼'F'可以在沒有新建的情況下被調用...但是實際上不需要創建對象。省略返回會迫使它需要'new',並在沒有它的情況下返回undefined。 –
「使一個函數返回自己的新實例」 - 您可能需要澄清這一點。你可能意思是「一個對象的新實例(使用構造函數)」?或者,簡單地「嘗試調用一個返回自身引用的函數」?實際上,在JavaScript中進行「新函數實例」的方式並不多。 – Katana314
這解釋得很好:http://javascript.info/tutorial/constructor;) – ann0nC0d3r
返回自身的函數不會創建「實例」。它只是返回一個函數。 – Bergi