请问一下如何解释这两种箭头函数中的this指向?

新手上路,请多包涵

发现以下两种对象中的箭头函数,this指向不同,请问大神们该如何解释呢?

代码一

const person = {
    show: () => {
        console.log(this);  // why window
    }
}
person.show();

代码二

class Person {
    show = () => {
        console.log(this);  //why person
    }
}
const person = new Person(); 
person.show()

已知悉,箭头函数中的this是指向上一层作用域中的this,如果没有,会一直往上找,直到顶层,在浏览器中自然是this。所以第一种好理解,应该是对象变量中的{}不是具备作用域范围;问题在于第二种怎么解释呢。

阅读 1.3k
2 个回答


这样是不是就好理解了

箭头函数的 this 指向要看函数创建时的作用域,你这里的 show 是在 person 实例化时才创建,所以指向 person。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题