箭头函数 this指向问题
1.为什么要用箭头函数
- 简洁 易用
- 固定this 指向(箭头函数在this定义时候生效)
2.箭头函数分析this指向
1.this指向调用函数的对象
- 情况1
var obj={ a:"1", b:function(){//this指向这个function局部作用域 这个作用域的调用对象是obj 所以this指向obj return ()=>{ console.log(this); //obj console.log(this.a) //'1' } } } obj.b()();
- 情况2
function a(){
return ()=>{ //因为箭头函数和a函数有相同的对象 被window调用则指向window对象
console.log(this)//window
}
}
a()();
2.this指向window
var a=2;//这里不能换成let a=2 因为window.获取不到a的值
var obj={
a:"1",
b:()=>{//由于对象不是作用域 所以作用域指向 全局window
console.log(this)//window
console.log(this.a)//2
}
}
obj.b();
总结:1. 箭头函数在定义的时候生效 而普通函数则在调用的时候生效
2.箭头函数没有自己的this,所以它总是指向外层代码块的this (全局作用域,局部作用域)
3.当箭头函数所在的代码块为函数时候 则谁调用这个函数this就指向谁
浙公网安备 33010602011771号