JS 中的函数嵌入了 2 个概念:
- 实体
- 一个功能
功能实体是某种包含功能的“胶囊”,即将多个输入转换为输出的能力。这个胶囊就是我们所说的“物体”。在此递归结束时,您会找到 identity Function.constructor === Function,它设置了语言内省特征的限制。其余的 JS 功能无法由语言本身访问,因为不存在任何嵌入它们的封装或对象。
在 JS 中,您不能定义独立的“功能”,但您可以创建实现此类功能的对象,这些功能可以被视为任何其他对象。Function对象是实现功能的核心对象。如果您定义命名或匿名函数(通过function关键字),您正在创建一个绑定到名称(对于命名函数)或直接绑定到变量(未命名函数)的 Function 对象。
function foo(a, b) { return a+b; } //This function is a Function object bound to the name `foo`
var a = function(a, b) { return a+b; } //the Function object is bound to `a`
与 Array 对象具有[]用于访问数组元素的运算符相同的方式,您可以将其解释()为用于调用其嵌入功能的 Function 对象的运算符。