面试官 : “ 请你说一下 call、apply、bind 的区别 ? ”
2026/7/21 18:30:18 网站建设 项目流程


call、apply、bind
的核心区别

这三个方法的作用都是改变函数的this指向,他们三个的第一个参数是要绑定给函数的this对象。但在传参方式和执行时机上有明显不同。

详细对比

特性callapplybind
this 绑定后是否立即执行立即执行立即执行返回一个新函数,需手动调用才执行
传参方式逐个传递参数以数组形式传递参数预先传递部分参数(柯里化),剩余参数在调用时传递
返回值函数执行结果函数执行结果新的绑定函数

代码示例

1. call 用法

function greet(name) { console.log(`${this.greeting}, ${name}!`); } const obj = { greeting: 'Hello' }; greet.call(obj, 'Alice'); // 输出:Hello, Alice!

2. apply 用法

function sum(a, b) { return a + b; } const numbers = [1, 2]; const result = sum.apply(null, numbers); // 输出:3

3. bind 用法

function greet(name) { console.log(`${this.greeting}, ${name}!`); } const obj = { greeting: 'Hi' }; const boundGreet = greet.bind(obj); boundGreet('Bob'); // 输出:Hi, Bob!

核心场景

  • call:适合参数数量明确的场景,如继承、借用方法。
  • apply:适合参数数量不确定或已存在数组的场景,如数组求最大值Math.max.apply(null, [1, 2, 3])
  • bind:适合需要延迟执行或预先绑定this的场景,如事件回调、定时器。

这三个方法的作用都是改变函数的this指向,call , apply , bind 他们三个的第一个参数是要绑定给函数的this对象。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询