在 JavaScript 中,对象中的普通函数和箭头函数在处理 this 时存在显著差异。

const people = {
  name: '',
  hello() {
    console.log(this.name)
  },
  hey: () => {
    console.log(this.name)
  }
}
people.hello()
people.hey()

执行以上代码,people.hello() 会输出空字符串,而 people.hello() 会输出 undefined。这是因为:

  • 普通函数中的 this 指向调用函数的对象:在 hello() 函数中,this.name 指的是 people 对象的 name 属性。
  • 箭头函数中的 this 指向定义函数时的作用域hey() 是一个箭头函数,它没有自己的作用域,因此 this 指向的是全局作用域。在全局作用域中,并没有 name 属性,所以输出 undefined

简单来说,普通函数的 this 是动态的,根据调用方式决定,而箭头函数的 this 是静态的,在定义时就确定了。

理解 this 在 JavaScript 中的行为是至关重要的,因为它直接影响函数内部对对象属性的访问方式。

JavaScript 中普通函数和箭头函数的 this 指向差异

原文地址: https://www.cveoy.top/t/topic/qn9L 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录