搞懂 Javascript 中的this(包含apply、call、bind)
原文中文,约3600字,阅读约需9分钟。
📝
内容提要
JavaScript中的关键字this是一个复杂机制,指向执行时的当前对象。其绑定方式取决于函数的调用方式,包括作为对象方法、普通函数、构造器调用以及使用call或apply。eval和with可以在运行时修改作用域,但不推荐使用。
❓
Q&A
JavaScript中的this指向什么?
this指向执行时的当前对象。
如何使用call和apply改变this的指向?
call和apply可以动态改变函数的this指向,apply接受数组作为参数,call接受不固定数量的参数。
构造器调用时this指向哪里?
构造器调用时,this指向返回的对象,除非显式返回一个对象。
普通函数调用时this指向哪个对象?
普通函数调用时,this指向全局对象。
bind方法的作用是什么?
bind方法修改this后返回一个新的函数,但不会立即执行。
eval和with在JavaScript中有什么风险?
eval和with可以在运行时修改作用域,但不推荐使用,可能导致性能问题和难以预料的错误。
🏷️