JS中 this關鍵字出現的場景都有哪些?


總結點:

1. 全部的this關鍵字,在函數運行時,才能肯定它的指向
2. this所在的函數由哪一個對象調用,this就會指向誰
3. 當函數執行時,沒有明確的調用對象時,則this指向window瀏覽器


出現場景總結:

  • 瀏覽器環境中,全局this指向window
  • 普通函數中,this指向window
  • 定時器函數中,this指向window
  • 對象方法中,this指向實例對象
  • 構造函數中,this指向實例對象
  • 事件處理函數中,this指向事件源
  • 箭頭函數中,沒有this;若是使用this,則把this當作普通變量對待,而後按做用域去查找便可

如何判斷箭頭函數的this?

由於箭頭函數不具有本身的this,因此很是簡單,僞裝它不存在,就像這樣:函數

var obj = { 
    show: function(){
     setTimeout(()=> {  
      console.log(this);
      },0),
}
}

這下this的指向很是清晰了吧this

  1. 箭頭函數能夠用call來改變this指向嗎?

不能!! 試圖改變箭頭函數的this是徒勞的。code

var fn = () => {
console.log(this);
}
fn.call(document); // 依然打印window
相關文章
相關標籤/搜索