【js理解】call(),apply()以及bind()方法之间的共同点以及区别

这篇博客深入探讨了JavaScript中改变函数上下文的三种方法:call()、apply()和bind()。它们都能设置函数内部的this值,但用法各有特点。call()和apply()都是同步执行,立即改变this并执行函数,其中call()直接传入参数,apply()需传入参数数组。bind()则返回一个新的函数,其this被永久绑定,适合异步场景,参数传递方式与call相同。了解这些区别对于优化代码和掌握JavaScript核心概念至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先他们三个的共同点为,都可以改变所调用函数的this指向。
用法:

//这里的f为所要改变this指向的函数,o为调用的对象。
f.call(o)
f.apply(o)
||
let g = f.bind(o)
g()

最接近的应该是call()方法和apply()方法,
call()和apply()的区别在于后续参数的传递。
它俩都是同步代码,改变后立即执行,只改变一次。
Call直接写参数,而apply需要传入数组

f.call(o,12)
f.apply(o,[1,2])
||
let g = f.bind(o,2)
g(3)

而bind如上所示,它的用法与apply和call大有不同。他是异步代码,而且永远改变指向。传参方式与call一样。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值