JavaScript的this原理

Javascript 是一個文本作用域的語言,就是說, 一個變量的作用域,在寫這個變量的時候確定。this 關鍵字是爲了在 JS 中加入動態作用域而做的努力。所謂動態作用域,就是說變量的作用範圍,是根據函數調用的位置而定的。從這個角度來理解 this, 就簡單的多。

this 是 JS 中的動態作用域機制, 具體來說有四種, 優先級由低到高分別如下:
1. 默認的 this 綁定, 就是說 在一個函數中使用了 this, 但是沒有爲 this 綁定對象。這種情況下, 非嚴格默認, this 就是全局變量 Node 環境中的 global, 瀏覽器環境中的 window。
2. 隱式綁定: 使用 obj.foo() 這樣的語法來調用函數的時候,函數 foo 中的 this 綁定到 obj 對象。
3. 顯示綁定: foo.call(obj, ...), foo.apply(obj,[...]), foo.bind(obj,...)。
4. 構造綁定: new foo() , 這種情況, 無論 foo 是否做了綁定, 都要創建一個新的對象, 然後 foo 中的 this 引用這個對象。

 

參考資料:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章