术语:This 绑定

领域:#前端/JavaScript

定义

this 是 JavaScript 中一个指向执行上下文对象的特殊关键字,其绑定在函数调用时动态确定

注意!

每次函数调用都会产生新的执行上下文,this 是执行上下文的一个属性,this 的值在创建执行上下文时确定,函数内部访问 this,就是从当前执行上下文中读取。

关键点

  • this 不是在定义时确定,而是在调用时(创建执行上下文时)
  • 不同调用方式创建不同的执行上下文,因此 this 不同
  • 箭头函数没有自己的执行上下文,从外层普通函数继承
  • 异步回调创建新的执行上下文,this 重新绑定

示例

  • 默认绑定:函数直接调用时,this 指向全局对象
function showThis() { console.log(this); }
showThis(); // window
  • 隐式绑定:作为对象方法调用时,this 指向该对象
const obj = { name: 'Trae', greet() { console.log(this.name); } };
obj.greet(); // Trae
  • 显式绑定:通过 call/apply/bind 指定 this
const obj = { name: 'Trae' };
function greet() { console.log(this.name); }
greet.call(obj); // Trae
  • 箭头函数:捕获外层作用域的 this,(箭头函数没有自己的执行上下文)
  • 构造函数:使用 newthis 指向新实例

跨学科含义

  • 在 JavaScript 中this 指向当前执行上下文,在不同调用方式下有不同的绑定规则
  • 在其他语言中this 通常指向当前实例对象(如 Java、C++)

关联

FAQ