JavaScript 中的 this

以下都是自己學習過程中的自問自答:

  • Q:JS 中的 this 是什么意思?A:我理解為一個代詞。

  • Q:什么時候能確定 this 指代的是什么?A:函數執行的時候。

  • Q:上一個問題展開講講?A:有一種方便記住的規律就是:

    • foo.call(a, b) 中第一個參數 a 就是 this 指代的東西;
    • foo(argv)foo.call(undefined, argv) 是等價的;
    • a.foo(b)a.foo.call(a, b) 是等價的;
    • 在一般情況下,如果 thisundefined,會被自動換成 global 對象,在瀏覽器中也就是 window 對象。
  • Q:就這么簡單?A:顯然不是,以上只是方便初學記住的規律。也有例外情況。

  • Q:例外情況?A:例如 es6 中新加入的箭頭函數,是在聲明時就綁定了 this,之后即使使用 callapply 也沒法改變 this 的值。

  • Q:在學習 this的過程中參考的那些文章?A:以下三篇收益最多:

    1. this 的值到底是什么?一次說清楚
    2. javascript 中的對象查找
    3. Understand JavaScript's "this" With Clarity, and Master It
  • Q:還有不解的地方嗎?A:有。例如 new? 相關的部分。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容