t7yang
9 years ago
JS的 this 關鍵字是一個會隨著背景環境(context)改變其所代表的目標,因此容易因為觀念建立的不足導致陷入不知道this當下代表哪個目標的困境。這點在看書時(angularJS)作者有提到較好的習慣是使用代理的方式使用this,以避免this被其他函數呼叫覆寫了this所代表的目標。
t7yang
9 years ago
書上並沒有多加著墨,只給延伸閱讀的資訊。所以就呈現了類似知其然,不知其所以然的情況。閱讀過這篇文章後(https://toddmotto.com/un... ),對this在範疇的變化中變更其所代表的對象有了比較清楚的認識。
t7yang
9 years ago
透過emscript5提供的.bind()方法,雖然可以做到明確指定呼叫函數的this目標,但作者也提到使用代理的方式更為簡單。這大概也是為什麼現在越來越多程式都習慣以self來當作this的代理,以避免this在其他函數的呼叫被覆寫,在我們未察覺的情況寫出我們預期對卻實際上錯的程式碼。
立即下載