var foo = function () {
return new moo();
}
var moo = function () {
return this;
}
如果我执行语句
new foo()
我真的会得到一个 moo 实例吗?这看起来既明显又不直观。从功能上讲,这是应该发生的事情,但与此同时,如果您不了解内部结构,这不是预期的。
编辑:我意识到公元前这似乎不符合直觉。在 Java 中,构造函数不能返回任何内容。
这与 jquery 使用的构造函数模式非常相似。
最佳答案
是的,您将获得一个 moo 实例。
不直观是因为你可以在javascvipt构造函数中返回对象本身以外的东西。这是可能的,因为在js中所有的函数实际上都是对象。在 java 和 c# 这样的语言中这是不可能的,构造函数总是返回构造函数所属的对象。您也不能在此类语言中调用没有 new 关键字的构造函数。
不从构造函数返回任何东西与 return this;
在 js 中(假设它使用了构造函数)一样,也增加了一些困惑。
关于java - new 会返回命名函数构造函数实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17775007/