首先说一下箭头函数的特点:
1.this指向定义时的对象,也就是说箭头函数一旦定义完成,它的指向是固定的,没法改变,它的指向是定义时所在的作用域,而不是执行时的作用域;
2.箭头函数没有自己的this;
3.箭头函数不能当构造函数用;
4.不能绑定arguments,用rest参数…解决;
先来看一下下面代码:
var obj={
fn:function(){
setTimeout(function(){
console.log(this,"aaaaaaaaaaaa");
},2000);
}
}
obj.fn();//window
这次this指向了最外层的window对象,因为这次this出现在函数setTImeout()中,而setTImeout()中的this是指向window对象。
改为箭头函数,再看一下
var obj={
fn:function(){
setTimeout(() => {
console.log(this,"bbbbbbb");
},2000);
}
}
obj.fn()
控制台输出:
箭头函数中的this是在定义函数的时候绑定,而不是在执行函数的时候绑定。