面试官:说说call、apply、bind是如何改变this的

💡 原文中文,约5500字,阅读约需13分钟。
📝

内容提要

本文介绍了JavaScript中this的显式绑定的三种方法:call、apply和bind,它们可以改变函数中this的指向。call和apply的区别在于参数的传递方式不同,bind则是创建一个新的函数并绑定this。文章还讨论了call、apply和bind在调用和结合new操作符时的影响。掌握这些基础知识对于理解JavaScript中的执行上下文、词法作用域和闭包非常重要。

🎯

关键要点

  • 本文介绍了JavaScript中this的显式绑定的三种方法:call、apply和bind。
  • call和apply的区别在于参数的传递方式,call接受多个参数,而apply接受一个参数数组。
  • bind创建一个新的函数并绑定this,返回的函数可以在后续调用时使用。
  • 掌握call、apply和bind对于理解JavaScript中的执行上下文、词法作用域和闭包非常重要。
  • call函数的实现步骤包括判断调用对象、设置上下文、调用函数并返回结果。
  • apply函数的实现步骤与call类似,但只接受两个参数,第二个参数为参数数组。
  • bind函数的实现步骤是绑定this和固定参数,返回一个新的待执行函数。
  • bind和call的主要区别在于call立即执行函数,而bind返回一个新的函数供后续执行。
  • 使用bind绑定的函数可以再次使用bind进行绑定,但之前的this值会被忽略。
  • 使用new操作符调用bind绑定的函数时,bind提供的this值会被忽略,参数会正常传递。
➡️

继续阅读