以下都是自己學(xué)習(xí)過程中的自問自答:
Q:JS 中的
this
是什么意思?A:我理解為一個(gè)代詞贼穆。Q:什么時(shí)候能確定
this
指代的是什么题山?A:函數(shù)執(zhí)行的時(shí)候。-
Q:上一個(gè)問題展開講講故痊?A:有一種方便記住的規(guī)律就是:
-
foo.call(a, b)
中第一個(gè)參數(shù)a
就是this
指代的東西顶瞳; -
foo(argv)
和foo.call(undefined, argv)
是等價(jià)的; -
a.foo(b)
和a.foo.call(a, b)
是等價(jià)的愕秫; - 在一般情況下慨菱,如果
this
是undefined
,會(huì)被自動(dòng)換成global
對象豫领,在瀏覽器中也就是window
對象抡柿。
-
Q:就這么簡單舔琅?A:顯然不是等恐,以上只是方便初學(xué)記住的規(guī)律。也有例外情況备蚓。
Q:例外情況课蔬?A:例如 es6 中新加入的箭頭函數(shù),是在聲明時(shí)就綁定了
this
郊尝,之后即使使用call
二跋、apply
也沒法改變this
的值。-
Q:在學(xué)習(xí)
this
的過程中參考的那些文章流昏?A:以下三篇收益最多: Q:還有不解的地方嗎?A:有况凉。例如
new?
相關(guān)的部分谚鄙。