javascript中apply、call和bind的区别汇总实例详解

本文详细介绍了JavaScript中apply、call和bind函数的作用,它们都用于改变函数内部this的指向。通过实例分析,展示了它们在实际应用中的用法,包括参数传递的差异:call参数一一对应,apply参数为数组,bind则允许在调用时再次传参。文章还强调了理解this的重要性,帮助开发者避免常见陷阱。
摘要由CSDN通过智能技术生成

this在js中是至关重要的,相信很多人在这个上面都栽过跟头,众所周知apply、call和bind都是用来在函数执行过程中手动去改变this指向问题,那么具体怎么使用有啥区别呢?

三者相似点

  • 1、都是用来改变函数的this对象的指向的。
  • 2、第一个参数都是this要指向的对象。
  • 3、都可以利用后续参数传参。

this指向

我觉得首先有必要用实例来说个我们经常用的函数中可能忽略的概念,例如:

分析,我们如何理解上面这段代码?可能有人听的最多的就是this就是当前谁调用指向谁,好像是那么回事,不讨论,其实我们通过融入apply、call或者bind去理解上面这段代码,例如:

深入浅出

 三者差异

 

xm.say.call(xc,"实验小学","六年级");  //小翠在实验小学上六年级

1

xm.say.apply(xc,["实验小学","六年级"]); //小翠在实验小学上六年级

1

xm.say.bind(xc,"实验小学","六年级")(); //小翠在实验小学上六年级

但是由于bind返回的仍然是一个函数,所以我们还可以在调用的时候再进行传参。

1

xm.say.bind(xc)("实验小学","六年级"); //小翠在实验小学上六年级

小结

居上示例总结:call后面的参数与say方法中是一一对应的,而apply的第二个参数是一个数组,数组中的元素是和say方法中一一对应的,这就是两者最大的区别。那么bind怎么传参呢?它可以像call那样传参,bind比较特殊,bind返回的仍然是一个函数,所以我们还可以在调用的时候再进行传参。

我要坐在有阳光的地方,像猫舔奶碗那样一字不漏地把报纸上下看遍左右看遍,然后把世人在阳光下开展的各种生之片段吸入体内,滋润每一个细胞。——村上春树《世界尽头与冷酷仙境》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴天暖宝宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值