在对象和类的箭头函数中与此行为不同 [duplicate]

different this behavior in arrow functions for object and classes [duplicate]

提问人:k4rnage 提问时间:8/5/2023 更新时间:8/5/2023 访问量:26

问:

我正在分析它在类和对象中的行为,并且有一个问题不能让我平静。我有这个代码片段:

const obj = {
  a: 5,
  say: () => console.log(this.a)
}

obj.say(); // will log undefined

class A {
  constructor() {
    this.a = 15;
  }

  say = () => console.log(this.a);
}

const a = new A();
a.say(); // will log 15

为什么它适用于类示例,而不适用于单个对象?

据我了解,在对象中声明方法和声明类方法之间存在一些区别。但是哪一个呢?

JavaScript 对象 方法 this

评论

1赞 Nick Parsons 8/5/2023
以下是对以下因素的粗略解释: 为什么箭头函数作为静态成员值没有词法作用域?,对于对象,你得到是因为箭头函数没有自己的绑定,所以它在周围的范围内查找值,在你的情况下是(因为定义它的周围上下文是(因为定义它的周围上下文)classundefinedthisthisundefined

答: 暂无答案