什么是返回新函数();在 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— 什么是高阶函数?数组中的高阶函数有哪些?