类中的箭头函数

Arrow function in class

提问人:Đức Hoàng 提问时间:3/13/2021 最后编辑:Đức Hoàng 更新时间:3/13/2021 访问量:134

问:

代码 1:

class X1 {
  x = 1;
  get = () => this;
}
a = new X1();
console.log(a.get());

代码 2:

var X1={
    x:1,
    get:()=>this
}
console.log(X1.get())

我不知道为什么代码 1 的结果是 X1,而代码 2 是 Window。 希望大家能帮助我!!

JavaScript ecmascript-6 这个

评论


答:

5赞 CertainPerformance 3/13/2021 #1

类字段是用于在构造函数中赋值的语法糖。代码 1 等效于:

class X1 {
  constructor() {
    this.x = 1;
    this.get = () => this;
  }
}

在构造函数中,引用正在创建的实例 - .箭头函数继承自其外部作用域。因此,返回的与外部作用域中的相同 - 实例或 .thisathisthis.get = () => this;thisthisa

在代码 2 中,外部作用域是顶层。 顶层是全局对象(在浏览器中为 ),或者 。因此,返回的箭头函数在顶层返回 - 在浏览器中的草率模式下,这就是窗口。thiswindowundefinedgetthisthis