以下都是自己學習過程中的自問自答:
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)
是等價的; - 在一般情況下,如果
this
是undefined
,會被自動換成global
對象,在瀏覽器中也就是window
對象。
-
Q:就這么簡單?A:顯然不是,以上只是方便初學記住的規律。也有例外情況。
Q:例外情況?A:例如 es6 中新加入的箭頭函數,是在聲明時就綁定了
this
,之后即使使用call
、apply
也沒法改變this
的值。-
Q:在學習
this
的過程中參考的那些文章?A:以下三篇收益最多: Q:還有不解的地方嗎?A:有。例如
new?
相關的部分。