关键字“ this”如何与箭头功能一起使用?

时间:2020-07-10 20:01:08

标签: javascript

我知道箭头函数没有自己的“ this”,而是借用了其所包围的词法范围的“ this”。

const person = {
    points: 23,
    score: () => {
      this.points++;
  }
};

为什么person.score给我未定义的箭头功能,它应该可以访问它?

1 个答案:

答案 0 :(得分:1)

箭头功能没有自己的此功能。由于箭头功能没有与之关联的this,因此它使用父级的this

在您的示例中,此内部人员将指向父对象,并且该对象对象的父对象是Window。因此,this指向封闭范围,而不是人员对象。在您的情况下,这绑定到全局对象。您可以看到this的内容显示在下面(“窗口”对象)。

const person1 = {
  points: 23,
  score: function(){
    console.log(this);
  }
};
// this in score function will point to person1
person1.score();

const person2 = {
  points: 23,
  score: () => {
    console.log(this);
  }
};
// here, this will point to global object       
person2.score();