返回

当心! 不为人知的 this 指向规则-面试高频题指南

前端

  1. this指向规则全解析

在JavaScript中,this是一个特殊的,它表示当前执行代码的对象。this指向的对象根据调用它的上下文而定,可以说,this是javascript中的一个核心概念,想要真正掌握javascript这门语言,必须掌握this的指向规则。

1.1 默认指向

当一个函数不是作为对象的方法被调用时,this指向全局对象,在浏览器环境中,全局对象就是window对象,而在Node.js环境中,全局对象就是global对象。

function sayHello() {
  console.log(this); // window or global
}

sayHello();

1.2 方法中的this

当一个函数作为对象的方法被调用时,this指向该对象。

const person = {
  name: "John",
  sayHello() {
    console.log(this.name); // John
  },
};

person.sayHello();

1.3 构造函数中的this

当使用new关键字调用一个函数时,this指向新创建的对象。

function Person(name) {
  this.name = name;
}

const person = new Person("John");

console.log(person.name); // John

1.4 箭头函数中的this

箭头函数没有自己的this指向,它会继承其父级作用域的this指向。

const person = {
  name: "John",
  sayHello: () => {
    console.log(this.name); // undefined
  },
};

person.sayHello();

2. 箭头函数与传统函数的区别

箭头函数与传统函数之间存在一些关键区别:

  • 箭头函数没有自己的this指向,它会继承其父级作用域的this指向。
  • 箭头函数没有自己的arguments对象,它使用父级作用域的arguments对象。
  • 箭头函数不能被用作构造函数。
  • 箭头函数不能使用yield关键字。

3. 面试高频题解析

3.1 this指向面试题

  1. 什么是this指向?
  2. 在默认情况下,this指向什么对象?
  3. 在方法中,this指向什么对象?
  4. 在构造函数中,this指向什么对象?
  5. 在箭头函数中,this指向什么对象?

3.2 箭头函数面试题

  1. 什么是箭头函数?
  2. 箭头函数有哪些特点?
  3. 箭头函数与传统函数有什么区别?
  4. 什么时候应该使用箭头函数?

4. 总结

this指向规则是JavaScript中一个重要的概念,掌握它可以帮助我们更好地理解和使用JavaScript。箭头函数是ES6中引入的一种新的函数语法,它具有与传统函数不同的特点,在使用时需要特别注意。

希望这篇文章对大家有所帮助,如果你还有其他问题,欢迎在评论区留言。