返回
this指向:简洁清晰,直指真正调用者
前端
2023-09-27 11:17:27
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指向。