Javascript 类中的Arrow函数
代码1: 代码2:Javascript 类中的Arrow函数,javascript,ecmascript-6,this,Javascript,Ecmascript 6,This,代码1: 代码2: class X1 { x = 1; get = () => this; } a = new X1(); console.log(a.get()); 我不知道为什么代码1的结果是X1,但代码2是Window。 希望大家能帮助我 类字段是用于在构造函数中赋值的语法。代码1相当于: var X1={ x:1, get:()=>this } console.log(X1.get()) 在构造函数中,此引用正在创建的实例-a。箭头函数从其外部作用
class X1 {
x = 1;
get = () => this;
}
a = new X1();
console.log(a.get());
我不知道为什么代码1的结果是X1,但代码2是Window。
希望大家能帮助我 类字段是用于在构造函数中赋值的语法。代码1相当于:
var X1={
x:1,
get:()=>this
}
console.log(X1.get())
在构造函数中,此
引用正在创建的实例-a
。箭头函数从其外部作用域继承此。所以this.get=()=>this
导致返回的this
与外部作用域中的this
相同,即实例或a
在代码2中,外部范围是顶层<代码>顶层的此是全局对象(在浏览器中,即窗口
),或未定义的
。因此,箭头函数get
返回this
在顶层返回this
——在浏览器的草率模式下,这就是窗口
class X1 {
constructor() {
this.x = 1;
this.get = () => this;
}
}