箭头函数中的this和普通函数中的this的区别
结论:箭头函数中的this一般情况下,会一层一层的向外层作用域中查找,知道查到为止。而在普通函数中,this总是指向调用它的对象,如果用作构造函数,this指向创建的对象实例(如果没有对象调用那就指向window对象)。
const obj={
a(){
setTimeout(function(){
console.log(this)//window对象
},1000)
setTimeout(()=>{
console.log(this)//obj对象
},1000)
}
}
const obj={
a(){
setTimeout(function(){
setTimeout(function(){
console.log(this)//window对象
},1000)
//因为这一层是箭头函数,所以会向外找,而外层是function所以this指向了window
setTimeout(()=>{
console.log(this)//window对象
},1000)
},1000)
setTimeout(()=>{
setTimeout(function(){
console.log(this)//window对象
},1000)
//这个this是箭头函数中的,所以向外找,外层还是箭头函数,所以接着向外找,再外层就是obj了
setTimeout(()=>{
console.log(this)//obj对象
},1000)
},1000)
}
}