类中的箭头函数
代码 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 是窗口。希望大家帮帮我!!
回答
类字段是用于在构造函数中赋值的语法糖。代码 1 相当于:
class X1 {
constructor() {
this.x = 1;
this.get = () => this;
}
}
在构造函数内部,this指的是正在创建的实例 - a. 箭头函数this从它们的外部作用域继承。因此this.get = () => this;,返回的结果与外部作用域中this的相同this- 实例,或a.
在代码 2 中,外部作用域是顶层。this顶层是全局对象(在浏览器中,即window),或undefined. 因此,箭头函数get返回this返回this上顶层-在马虎模式在浏览器中,这是该窗口。