箭头函数的this 指向问题
箭头函数的特点
1.箭头函数没有this,箭头函数的this不是调用的时候决定的,而是在定义的时候决 定的。
2. 箭头函数它会直接绑定到它父级的执行上下文里的this,“上下文”为作用域 ; 也就是说 箭头函数的this 是看外层是否有函数,如果有 外层函数的this 就是内部箭头函数的 this ;如果没有 那么this 就是window
示例
var obj={ name:'obj', fun:()=>{ console.log(this) //window 外层没有函数 就是 window }, fun1:{ fun:()=>{ console.log(this) //window 外层也没有函数 就是 window } }, fun2:()=>{ var obj={ fun:()=>{ console.log(this) // window 外层也是箭头函数 继续往上找 没有函数 就是 window } } obj.fun() }, fun3:function(){ var obj={ fun:()=>{ console.log(this) // obj:{name:'obj'} 外层就普通函数fun3 调用者为obj 所以this 就是 obj } } obj.fun() } } obj.fun() obj.fun1.fun() obj.fun2() obj.fun3()