箭头函数没有自己的this,它继承了上层作用域的this。如果在全局作用域中定义箭头函数,那么它的this指向全局对象(在浏览器中是window)。箭头函数的this指向是词法作用域决定的,与调用方式无关。
箭头函数的this指向详解:

(图片来源网络,侵删)
1、普通函数的this指向:
在全局作用域中,this指向全局对象(浏览器环境中是window)。
在对象方法中,this指向调用该方法的对象。
在构造函数中,this指向新创建的实例对象。
在事件处理函数中,this指向触发该事件的元素。

(图片来源网络,侵删)
使用call、apply或bind方法时,this指向传入的第一个参数。
2、箭头函数的this指向:
箭头函数没有自己的this,它会捕获其所在上下文的this值作为自己的this值。
箭头函数内部的this值是在定义时确定的,而不是在运行时确定。
箭头函数不能用作构造函数,因为它没有prototype属性。

(图片来源网络,侵删)
示例代码:
function Person() {
this.age = 0;
setInterval(() => {
// 由于箭头函数没有自己的this,所以这里的this指向Person实例对象
this.age++;
}, 1000);
}
var p = new Person();
相关问题与解答:
问题1:如何理解箭头函数没有自己的this?
答案:箭头函数没有自己的this,它捕获其所在上下文的this值作为自己的this值,这意味着当你在一个对象的方法中使用箭头函数时,这个箭头函数内部的this仍然指向外部的对象。
问题2:为什么箭头函数不能用作构造函数?
答案:箭头函数没有prototype属性,因此不能用作构造函数,构造函数需要有一个prototype属性来定义其实例对象的原型链,由于箭头函数没有prototype属性,所以不能用来创建新的实例对象。