返回知识详解
JavaScript 核心
this 指向判定
默认 / 隐式 / 显式 / new 绑定,以及箭头函数的特殊规则。
四条绑定规则的优先级
普通函数的 this 在「调用时」确定,按优先级从高到低判定:
- new 绑定:
new Fn(),this 是新建的对象 - 显式绑定:
call/apply/bind,this 是传入的对象 - 隐式绑定:
obj.fn(),this 是obj - 默认绑定:独立调用
fn(),this 是全局对象或 undefined(严格模式)
点击「下一步」走查判定流程。
⚡ 分步讲解
1const obj = {2name: 'Alice',3greet() { return this.name; },4};56obj.greet();7const g = obj.greet;8g();9g.call({ name: 'Bob' });10new (function(){ this.name = 'New'; })();
1. 隐式绑定
obj.greet() 以「对象.方法()」形式调用,this 指向调用它的对象 obj,返回 'Alice'。
1 / 5
箭头函数不参与上述规则
箭头函数没有自己的 this,它捕获定义时所在词法作用域的 this,且无法被 call/apply/bind 改变。因此把对象方法写成箭头函数时,this 往往不是该对象,而是外层作用域的 this——这是常见错误来源。