JavaScript中的return new function();是什么意思?

4

在JS代码中,我看到过这样的用法:

function doStuff( selector ) {
    /* Stuff to do with selector */
}

var q = function( selector ) {
    return new doStuff( selector );
}

到底发生了什么?return new 到底做了什么?它似乎将其参数传递给其他函数,但是有没有人可以详细解释这个过程呢?

非常感谢您的帮助!


2
你的代码中的匿名函数返回一个 doStuff新实例 - Teemu
与 return new Array(); 相同,但这次它是一个函数对象。 - Kalzem
@BabyAzerty - 由于Array()的内部实现并不是很明显(而且由于Array执行了一些操作,使得使用new与否并不重要),因此这并没有什么帮助。 - Quentin
@Quentin:Mozilla开发人员区分了数组对象和函数对象链接参考。此外,对于大多数来自其他语言的开发人员来说,理解数组对象比理解函数对象更容易。 - Kalzem
1个回答

7
当我们使用new关键字调用函数时,会发生以下情况:
  • 在内存中创建一个新的对象
  • 该对象的作用域将传递给函数;因此,this关键字将引用该对象。
  • 返回新创建的对象。
因此,这就是您在JavaScript中创建实例的方式。您需要使用new关键字调用函数。这样做时,该函数被称为构造函数。
在您的示例中,q函数返回doStuff方法的实例。但请注意,命名约定不正确。
构造函数应该是名词而不是动词,并且应该使用Pascal-case而不是camel-case。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接