let obj = {
id:99,
hello:()=> {
console.log(this) //windows
},
hi:function(){
console.log(this); //obj
//obj;因为箭头函数没有自己的指向;因此其this指向为外面的hi函数的指向;即obj
setTimeout(()=>{console.log(this)},100);
setTimeout(function(){console.log(this)},100) //windows;定时器中函数是被windows调用的
}
}
obj.hello();
obj.hi();
上面的运行结果:
> [object Window]
> Object { id: 99, hello: ()=> {
console.log(this)
}, hi: function(){
console.log(this);
setTimeout(()=>{console.log(this)},100);
setTimeout(function(){console.log(this)},100)
} }
> Object { id: 99, hello: ()=> {
console.log(this)
}, hi: function(){
console.log(this);
setTimeout(()=>{console.log(this)},100);
setTimeout(function(){console.log(this)},100)
} }
> [object Window]
总结:
- 箭头函数没有自己的this指向;判断this指向的时候可以当作其不存在去判断this的指向