Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类中的Arrow函数_Javascript_Ecmascript 6_This - Fatal编程技术网

Javascript 类中的Arrow函数

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。箭头函数从其外部作用

代码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
。箭头函数从其外部作用域继承此。所以
this.get=()=>this
导致返回的
this
与外部作用域中的
this
相同,即实例或
a

在代码2中,外部范围是顶层<代码>顶层的此是全局对象(在浏览器中,即
窗口
),或
未定义的
。因此,箭头函数
get
返回
this
在顶层返回
this
——在浏览器的草率模式下,这就是窗口

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