箭头函数 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就指向谁

posted on 2019-11-21 22:37  旋风小美女  阅读(288)  评论(0)    收藏  举报