箭頭函數this的指向

看完這篇文章包你會作全部箭頭函數this的指向問題函數

在ES6書中說道this的指向指向定義時候的對象,怎麼理解他的這句話呢?廢話很少說,直接上代碼this

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

誰定義箭頭函數,是obj,那咱們就看看this.obj的this指向就能夠了很明顯是window,因此這裏箭頭函數的this指向指向windowspa

再看一道題code

    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對象

你學會了嗎blog

相關文章
相關標籤/搜索