箭头函数this的指向

看完这篇文章包你会做所有箭头函数this的指向问题

在ES6书中说道this的指向指向定义时候的对象,怎么理解他的这句话呢?废话不多说,直接上代码

var id = 1;
var obj = {
     id:2,
     fn:()=>{
           console.log(this.id)
     }
}
obj.fn()

谁定义箭头函数,是obj,那我们就看看this.obj的this指向就可以了很明显是window,所以这里箭头函数的this指向指向window

再看一道题

    function foo(){
        setTimeout(()=>{
            console.log(this.id)
        })
    }
    var id = 1;
    var obj = {
        id:2,
        foo
    }
    obj.foo()

谁定义了箭头函数,是setTimeout,那this.setTimeout的this直线也就是foo这个普通函数的this指向,那还不简单?普通函数的this指向调用他的对象,谁调用了他是obj,所以this指向为obj,答案为2

你学会了吗