是所有的函数声明&在幕后调用new Function()创建的表达式
Are all function declarations & expressions created by called new Function() behind the scenes?
我正在阅读ECMA 262 v5脚本中关于函数定义的部分。对于函数声明和函数表达式,都提到了以下内容:
返回中指定的创建新Function对象的结果13.2
第13.2节中提到的第一步是"创建一个新的本地ECMAScript对象…",然后"将F的[[Class]]内部属性设置为"Function">
由于"创建一个新的Funciton对象"的措辞,我想知道在幕后,函数声明/表达式是否是通过调用new function(….(创建的?
ECMA脚本规范的第15.3.2.1节谈到了新函数(…(表达式,而新函数(..(表达式本身引用了第13.2节中指定的相同逻辑。
关于新Function(…(表达式的项目符号编号11指定。。。
返回按照13.2中的规定创建的新Function对象,将p作为FormalParameterListopt,将body作为FunctionBody。传入Global Environment作为Scope参数,传入strict作为strict标志。
第13.2节是函数创建逻辑的单一来源,无论是创建函数表达式、函数声明还是调用函数构造函数。
所以要回答这个问题,不。创建一个函数声明/表达式不会调用新的function(…(。
由于"创建一个新的Funciton对象"的措辞,我想知道在幕后,函数声明/表达式是否是通过调用new function(….(创建的?
没有。它完全按照所说的去做,创建一个新的对象并使其成为一个函数。你预计new Function
的幕后会发生什么?相反,new Function
也会在13.2中调用该函数实例化。
相关文章:
- new Datamap() 在调用之间保持内存的共享状态
- 当我调用“new”时,JavaScript类的哪些部分会在内存中重新创建
- 调用Class.prototype=new MyClass()是否确保每次都重新实例化超类
- 当在运行nodejs的服务器上调用new Date()时,Date将返回服务器启动时的日期
- Javascript - 在未定义的对象上调用 new
- jshint 和 Function() gets:调用构造函数时缺少“new”前缀
- 在 new Model() 上返回一个函数,然后能够在返回的函数上再次调用 new
- 当调用返回相同对象的函数时,无论是否作为构造函数调用,我都应该使用“new”吗
- 在 Javascript 中使用闭包在对象上调用 new
- JavaScript 继承为什么我需要同时调用 fun.call 和 prototype = new Obj( )
- 对现有对象调用new Object()的Javascript优化
- 如何从Javascript中使用new调用的构造函数返回null
- javascript's ' new Date() '使用什么系统调用?
- 在Angular中调用Array Into New Array来执行Filter
- “new"匿名函数调用前返回对象
- 为什么调用带有new的函数时不返回相同的引用?
- Javascript:函数可以在new调用时创建静态变量吗?
- 在JavaScript函数中,我如何知道我是否被new调用
- 绕过了用new调用es6类的方法
- 使用new调用对象中的对象