什么是返回新函数();在 JavaScript 中? [复制]

Posted

技术标签:

【中文标题】什么是返回新函数();在 JavaScript 中? [复制]【英文标题】:What is return new function(); in JavaScript? [duplicate] 【发布时间】:2014-04-06 09:16:23 【问题描述】:

在 js 代码中我见过这样使用:

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


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

到底发生了什么? return new 到底在做什么?它似乎将它的参数传递给另一个函数,但是请有人好心地指导我完成这个过程吗?

感谢所有和任何帮助,在此先感谢。

【问题讨论】:

代码中的匿名函数返回 new instance 的 doStuff 同 return new Array();但这次是一个函数对象 @BabyAzerty — 由于 Array() 的内部结构并不真正可见(而且由于 Array 做了很多事情来使您是否使用 new 变得无关紧要),所以不是很有帮助。 @Quentin :Mozilla 开发人员区分了 Array 对象和 Function 对象 link ref 。此外,对于大多数开发者(来自其他语言)来说,Array 对象比 Function 对象更容易理解 【参考方案1】:

当我们使用 new 关键字调用函数时。会发生以下情况:

将在内存中创建一个new 对象 该对象的范围将被传递给函数;所以 this 关键字将引用该对象。 将返回新创建的对象。

本质上,这就是您在 javascript 中创建实例的方式。您需要使用 new 关键字调用函数。这样做时,该函数称为构造函数。

在您的示例中,q 函数返回 doStuff 方法的实例。请记住,命名约定是不正确的。

构造函数应该是名词而不是动词,它们应该是帕斯卡格,而不是骆驼格

【讨论】:

以上是关于什么是返回新函数();在 JavaScript 中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript实现new操作符

JavaScript实现new操作符

前端面试 JavaScript— 什么是高阶函数?数组中的高阶函数有哪些?

前端面试 JavaScript— 什么是高阶函数?数组中的高阶函数有哪些?

javascript构造函数小知识

Javascript函数没有正确展平数组