返回

this指向:简洁清晰,直指真正调用者

前端

this指向的本质

this指向就指向真正的调用者。这句话虽然简单,但涵盖了this指向的所有本质。无论是在面向对象编程还是函数式编程中,this指向始终指向调用它的对象或函数。

this指向的常见情况

  • 在普通函数中,this指向window对象 。例如:
function sayHello() {
  console.log(this); // window
}

sayHello();
  • 在类方法中,this指向类的实例 。例如:
class Person {
  constructor(name) {
    this.name = name;
  }

  greet() {
    console.log(`Hello, my name is ${this.name}`);
  }
}

const person = new Person('John');
person.greet(); // Hello, my name is John
  • 在箭头函数中,this指向与它的父级作用域相同 。例如:
const obj = {
  name: 'John',
  greet: () => {
    console.log(`Hello, my name is ${this.name}`);
  }
};

obj.greet(); // Hello, my name is John

this指向的特殊情况

在某些情况下,this指向可能会发生改变。例如:

  • 使用call、apply或bind方法时,可以显式地改变this指向 。例如:
const obj = {
  name: 'John'
};

function sayHello() {
  console.log(`Hello, my name is ${this.name}`);
}

sayHello.call(obj); // Hello, my name is John
  • 在构造函数中,this指向新创建的对象 。例如:
function Person(name) {
  this.name = name;
}

const person = new Person('John');
console.log(person.name); // John

this指向的总结

this指向是一个重要且容易让人困惑的概念,但只要掌握其本质和常见情况,并理解其特殊情况,您就可以轻松地理解和使用它。

避免“八股文”

在学习编程时,我们经常会遇到一些冗长而复杂的解释,这些解释往往会让我们感到困惑和厌烦。因此,在本文中,我尽量避免使用“八股文”,而是用简洁清晰的语言来解释this指向。我希望这种方式能够帮助您更好地理解this指向。