看完這篇文章包你會作全部箭頭函數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