JavaScript 函数特性与函数式编程
1. 函数的属性、方法和构造函数
在 JavaScript 程序中,函数也是一种值。使用 typeof
运算符作用于函数时,会返回字符串 "function"
,但实际上函数是一种特殊的 JavaScript 对象。既然函数是对象,那么它就可以像其他对象一样拥有属性和方法,甚至还有一个 Function()
构造函数用于创建新的函数对象。
1.1 length 属性
函数的 length
属性是只读的,它指定了函数的参数数量,也就是函数在参数列表中声明的参数个数,通常这也是函数期望接收的参数个数。如果函数使用了剩余参数(rest parameter),那么这个参数不会计入 length
属性。
1.2 name 属性
函数的 name
属性同样是只读的,它指定了函数定义时使用的名称。如果函数是命名函数,那么 name
属性就是该名称;如果是匿名函数表达式, name
属性则是首次赋值给该函数的变量或属性的名称。这个属性在编写调试或错误信息时非常有用。
1.3 prototype 属性
除了箭头函数外,所有函数都有一个 prototype
属性,该属性指向一个被称为原型对象的对象。每个函数都有不同的原型对象。当函数被用作构造函数时,新创建的对象会从原型对象继承属性。