箭頭函數this指向問題

這個問題困惑了小編好久以前的一個思路不對致使問題一直走向一個錯誤的方向,如今豁然開朗來跟你們一塊兒分享一下收穫javascript

  • 無this綁定 箭頭函數準確來說是沒有this綁定的,在使用時它的this是繼承下來的,關於箭頭函數的this指向咱們首先不要走進的誤區就是做用域鏈,既然他自身都沒有this那怎麼會根據做用域鏈來找this指向呢?
  • 案例分析 箭頭函數中this指向只有兩種狀況:
  1. 沒有被函數包裹,那麼它裏面的this就指向就是全局,window上面的對象
var a = 'I am windows';
   let obj = {
       a: 'I am objs',
       fun: () => {
           console.log(this.a);
       }
   }
   obj.fun(); // 輸出I am windows
複製代碼
  1. 被函數包裹就是與同級定義
var a = 'I am windows';
     let obj = {
         a: 'I am objs',
         fun(){
           (() => {
               console.log(this.a);
           })()  // 這邊就不弄其餘包裹了就用當即執行函數最明瞭
         }
     }
   obj.fun();  // I am objs
複製代碼

像上面的當即執行函數若是是function的話就輸出爲全局a,箭頭函數一樣解決了一些問題,當咱們在被函數包裹時就能夠採起它而後就可使用對象自身的方法以及屬性值。java

相關文章
相關標籤/搜索