| 功能 | call | apply | bind |
|---|---|---|---|
| 用途 | 改变函数执行上下文(即 this 指向),并立即执行函数 | 改变函数执行上下文,并立即执行函数 | 返回一个新函数,新函数 this 指向被绑定到指定对象上,并且新函数还可以接收部分参数 |
| 传参方式 | 逐个参数传入 | 以数组形式传入 | 可传入参数,生成一个新的函数 |
| this 指向 | 函数调用时临时修改 this 指向,调用结束后 this 指向恢复原状 | 函数调用时临时修改this指向,调用结束后 this 指向恢复原状 | 返回的新函数 this 指向被永久修改,绑定的 this 不会改变 |
| 柯里化实现 | 不支持 | 不支持 | 支持 |
| 用法示例 | call(this, args...) | apply(this, [...args]) | bind(this, args...)(...args) |
总结:call 和 apply 的作用都是为了改变 this 的指向,只是传参的方式不同;bind 和其他两个方法作用也是一致的,只是该方法会返回一个函数,此外还可以通过 bind 实现柯里化。