前端面试题-call、apply、bind的区别

97 阅读1分钟
功能callapplybind
用途改变函数执行上下文(即 this 指向),并立即执行函数改变函数执行上下文,并立即执行函数返回一个新函数,新函数 this 指向被绑定到指定对象上,并且新函数还可以接收部分参数
传参方式逐个参数传入以数组形式传入可传入参数,生成一个新的函数
this 指向函数调用时临时修改 this 指向,调用结束后 this 指向恢复原状函数调用时临时修改this指向,调用结束后 this 指向恢复原状返回的新函数 this 指向被永久修改,绑定的 this 不会改变
柯里化实现不支持不支持支持
用法示例call(this, args...)apply(this, [...args])bind(this, args...)(...args)

总结:call 和 apply 的作用都是为了改变 this 的指向,只是传参的方式不同;bind 和其他两个方法作用也是一致的,只是该方法会返回一个函数,此外还可以通过 bind 实现柯里化。