Function
构造函数
创建一个新的Function对象。 在 JavaScript 中, 每个函数实际上都是一个Function对象。
语法
new Function ([arg1[, arg2[, ...argN]],] functionBody)
参数
- arg1, arg2, ... argN
- 被函数使用的参数的名称必须是合法命名的。参数名称是一个有效的JavaScript标识符的字符串,或者一个用逗号分隔的有效字符串的列表;例如“×”,“theValue”,或“A,B”。
- functionBody
- 一个含有包括函数定义的JavaScript语句的字符串。
描述
使用Function构造器生成的
Function对象是在函数创建时解析的。这比你使用函数声明或者函数表达式(function)并在你的代码中调用更为低效,因为使用后者创建的函数是跟其他代码一起解析的
。
所有被传递到构造函数中的参数,都将被视为将被创建的函数的参数,并且是相同的标示符名称和传递顺序。
注意: 使用Function构造器生成的函数,并不会在创建它们的上下文中创建闭包;它们一般在全局作用域中被创建。当运行这些函数的时候,它们只能访问自己的本地变量和全局变量,不能访问Function构造器被调用生成的上下文的作用域。这和使用带有函数表达式代码的 eval
不同。
以调用函数的方式调用Function的构造函数 (不是用new关键字) 跟以构造函数来调用是一样的.
属性和方法
全局的Function对象没有自己的属性和方法, 但是, 因为它本身也是函数,所以它也会通过原型链从Function.prototype
上继承部分属性和方法。
原型对象
属性
Function.arguments
- 以数组形式获取传入函数的所有参数。此属性已被
arguments
替代。 Function.arity
- 用于指定的函数的参数的个数,但已被删除。使用
length
属性代替。 Function.caller
- 获取调用函数的具体对象。
Function.length
- 获取函数的接收参数个数。
Function.name
- 获取函数的名称。
Function.displayName
- 获取函数的display name。
Function.prototype.constructor
- 声明函数的原型构造方法,详细请参考
Object.constructor
。
方法
Function.prototype.apply()
- 在一个对象的上下文中应用另一个对象的方法;参数能够以数组形式传入。
Function.prototype.bind()
- bind()方法会创建一个新函数,称为绑定函数.当调用这个绑定函数时,绑定函数会以创建它时传入 bind()方法的第一个参数作为 this,传入 bind()方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数.
Function.prototype.call()
- 在一个对象的上下文中应用另一个对象的方法;参数能够以列表形式传入。
Function.prototype.isGenerator()
若函数对象为
generator,返回true,反之返回false
。Function.prototype.toSource()
- 获取函数的实现源码的字符串。 覆盖了
Object.prototype.toSource
方法。 Function.prototype.toString()
- 获取函数的实现源码的字符串。覆盖了
Object.prototype.toString
方法。 - 原文 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function#Syntax