var obj={
func:()=>{
console.log(this)
},
func1:function (){
console.log(this)
},
obj2:function(){
(()=>{
return console.log(this)
})()
}
}
obj.func()
obj.func1()
obj.obj2()
1、普通的函数中this总是指向他的直接调用者;
箭头函数中的this是在定义函数的时候绑定,而不是在执行函数的时候绑定。
2、上面的 obj.fun1();直接调用者是obj,因此this指向obj
箭头函数中的this指向是固定的,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数内部没有this,箭头函数的this是在定义时就绑定的,它的this就是箭头函数所处的对象的所处作用域。
比如obj.obj2();箭头函数所在的对象是函数obj2,函数obj2处于obj的作用域中,因此this指向obj;
比如obj.func();箭头函数所在的对象是obj,obj处于window的作用域中因此this指向window。
3,箭头函数是没有上下文的、this会直接指向上一级
第二种写法this指向调用它的调用者