new Function([arg1 [, arg2 [, ... argN]],] functionBody)
每次调用都会创建一个新函数:
- arg1, arg2, ... argN 为新函数形参名
- functionBody, 函数体
新函数在创建时执行解析,比平时函数声明效率低下,通过Function构造函数创建的函数不会创建闭包。相当于定义全局函数。即在函数运行时只能访问函数自己本地变量以及全局变量。
Function不包含任何属性和方法,它创建的实例,或者平时我们声明的函数,通过Function.prototype继承属性和方法:
- Function.prototype.apply(): 以第一个参数作为上下文,第二个参数作为参数调用方法,第二个参数为数组
- Function.prototype.bind(): 创建一个新函数,当调用新函数时,以传入的第一个参数为上下文,后续参数作为默认参数绑定。
- Function.prototype.toString(): 返回函数源代码
- Function.prototype.isGenerator(): 如果函数是generator,返回true,否则false
函数实例:函数实例从Function.prototype继承方法和属性。对于所有的构造函数,可以通过修改其prototype来修改对应实例