返回

js 的 Function 对象及创建方法

前端

  1. Function对象的创建

1.1 声明式创建

声明式创建是最常见的函数创建方式,使用 function 后跟函数名和圆括号。

function funcName() {
  // 函数体
}

1.2 表达式创建

表达式创建是使用函数表达式创建函数。函数表达式是一个匿名函数,没有函数名。

const func = function() {
  // 函数体
};

1.3 直接创建

直接创建是使用 new Function() 构造函数创建函数。这种创建方式很少使用,通常在需要动态创建函数时使用。

const func = new Function('x', 'y', 'return x + y;');

2. Function对象的属性和方法

Function 对象具有以下属性和方法:

2.1 length

length 属性返回函数的参数个数。

function func(x, y) {
  // 函数体
}

console.log(func.length); // 2

2.2 name

name 属性返回函数的名称。

function func() {
  // 函数体
}

console.log(func.name); // "func"

2.3 prototype

prototype 属性返回函数的原型对象。

function func() {
  // 函数体
}

console.log(func.prototype); // {}

2.4 apply()

apply() 方法调用函数,并将一个数组作为第一个参数传递给函数。

function func(x, y) {
  // 函数体
}

const args = [1, 2];

func.apply(null, args); // 执行 func(1, 2)

2.5 call()

call() 方法与 apply() 方法类似,但第一个参数是函数的 this 值。

function func(x, y) {
  // 函数体
}

const obj = {
  x: 1,
  y: 2
};

func.call(obj); // 执行 func(1, 2)

2.6 bind()

bind() 方法返回一个新的函数,该函数的 this 值被绑定为给定的值。

function func(x, y) {
  // 函数体
}

const obj = {
  x: 1,
  y: 2
};

const boundFunc = func.bind(obj);

boundFunc(); // 执行 func(1, 2)

3. function的提升

function 具有提升特性,这意味着函数的声明会在代码执行之前被提升到代码的顶部。

func(); // 执行 func()

function func() {
  // 函数体
}

4. function的覆盖

function 具有覆盖特性,这意味着函数的重新声明会覆盖之前声明的函数。

function func() {
  // 函数体
}

function func() {
  // 函数体
}

5. 总结

Function 对象是 JavaScript 的一个内置构造函数,用于创建新的函数对象。Function 对象具有 length、name、prototype、apply()、call() 和 bind() 等属性和方法。function 具有提升特性和覆盖特性。