术语: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,(箭头函数没有自己的执行上下文) - 构造函数:使用
new时this指向新实例
跨学科含义
- 在 JavaScript 中:
this指向当前执行上下文,在不同调用方式下有不同的绑定规则 - 在其他语言中:
this通常指向当前实例对象(如 Java、C++)
关联
- 属于:JavaScript
- 引用:闭包、原型、执行上下文