首先他们三个的共同点为,都可以改变所调用函数的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,1,2)
f.apply(o,[1,2])
||
let g = f.bind(o,2)
g(3)
而bind如上所示,它的用法与apply和call大有不同。他是异步代码,而且永远改变指向。传参方式与call一样。
这篇博客深入探讨了JavaScript中改变函数上下文的三种方法:call()、apply()和bind()。它们都能设置函数内部的this值,但用法各有特点。call()和apply()都是同步执行,立即改变this并执行函数,其中call()直接传入参数,apply()需传入参数数组。bind()则返回一个新的函数,其this被永久绑定,适合异步场景,参数传递方式与call相同。了解这些区别对于优化代码和掌握JavaScript核心概念至关重要。

被折叠的 条评论
为什么被折叠?



