【前端面试】call、apply 、bind、箭头函数

函数除了传参,还有一个调用上下文this,使用call、apply 、bind可以改变函数的this

在实际开发中,选择使用 callapply 还是 bind 取决于你的具体需求和场景。以下是一些使用这些函数的常见情况:

1. 使用 call 的情况:

  • 当你需要调用一个函数,并且需要明确指定 this 的上下文,同时参数已知且数量确定。
  • 当你想要调用一个函数,并且希望按照顺序传递参数。

示例:调用一个构造函数,同时指定 this 的上下文。

function Person(name,work) {
   
  this.name = name;
   this.work =work;
   const obj= this;
     console.log({
   obj})
}

const alice = Person.call({
    age: 25 }, 'Alice','coder'); // 使用call指定this上下文和参数

在这里插入图片描述

2. 使用 apply 的情况:

  • 当你有一个参数数组,并且想要将这个数组中的元素作为参数传递给一个函数。
  • 当你需要调用一个函数,但是参数数量不确定或者参数存储在数组中。

示例:使用 Math.max 函数找出数组中的最大值。

const fruits = {
   
   max:undefined
   }
   const numbers = [5, 8, 10, 3, 6];
  function findMax(numbers) {
   
     this.max=Math.max(numbers);
      const obj= this;
        console.log({
   obj})
        return this.max 
   }
   const maxNumber = findMax.apply(fruits, numbers,[90]);
   console.log(maxNumber,fruits)

在这里插入图片描述

3. 使用 bind 的情况:

  • 当你需要创建一个新的函数,并且想要预先绑定 this 的上下文,同时保留参数的灵活性。
  • 当你想要延迟执行函数,或者将函数作为回调传递给其他函数,同时保持特定的 this 上下文。
  • 当你想要实现函数柯里化(curry)或部分应用(partial app
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值