返回知识详解
JavaScript 核心

this 指向判定

默认 / 隐式 / 显式 / new 绑定,以及箭头函数的特殊规则。

四条绑定规则的优先级

普通函数的 this 在「调用时」确定,按优先级从高到低判定:

  • new 绑定:new Fn(),this 是新建的对象
  • 显式绑定:call / apply / bind,this 是传入的对象
  • 隐式绑定:obj.fn(),this 是 obj
  • 默认绑定:独立调用 fn(),this 是全局对象或 undefined(严格模式)

点击「下一步」走查判定流程。

分步讲解
1const obj = {
2 name: 'Alice',
3 greet() { return this.name; },
4};
5
6obj.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——这是常见错误来源。

学完了?做几道题巩固一下
针对「JavaScript 核心」范围练习