2016-01-21 35 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。 –