2016-01-21 50 views
2

所以我遇到了一個問題,我嘗試創建一個返回自身的函數的新實例。但我不能那樣做。我完全沒有得到它。希望在這裏得到一些解釋。以下是代碼:無法形成自己返回的函數的新實例

function f(){ return f; } 
new f() instanceof f; //returns false - should return true as per my knowledge 

感謝您關注它。

+0

「使一個函數返回自己的新實例」 - 您可能需要澄清這一點。你可能意思是「一個對象的新實例(使用構造函數)」?或者,簡單地「嘗試調用一個返回自身引用的函數」?實際上,在JavaScript中進行「新函數實例」的方式並不多。 – Katana314

+0

這解釋得很好:http://javascript.info/tutorial/constructor;) – ann0nC0d3r

+1

返回自身的函數不會創建「實例」。它只是返回一個函數。 – Bergi

回答

1

您不想返回任何內容(當調用普通函數調用時,將使用newundefined調用時返回this)。類定義已更改爲大寫字母F,因爲javascript中的對象應以大寫字母開頭,表示需要使用new調用它們。

var F = function() {}; 

var f = new F(); 
+1

你應該完全省略構造函數的'return'。 – Bergi

+1

謝謝!你是對的。如果對象構造函數使用'return this',那麼'F'可以在沒有新建的情況下被調用...但是實際上不需要創建對象。省略返回會迫使它需要'new',並在沒有它的情況下返回undefined。 –