1. 程式人生 > >1031 作用域鏈和this

1031 作用域鏈和this

1.作用域鏈

   作用域鏈:瀏覽器給js的一個生存環境(棧記憶體)。

   作用域鏈:js中的關鍵字var和function都可以提前宣告和定義,提前宣告和定義的放在我們的記憶體地址(堆記憶體)中。然後js從上到下逐行執行,遇到變數就去記憶體地址查詢是否存在這個變數。有就使用,沒有就繼承向父級作用域查詢直到window下結束,這種查詢機制叫作用域鏈。

   js程式碼中存在著大量的變數和函式,我們在使用它們的時候一定要知道他們到底屬於誰。

 

2.this

  1.this是js的一個關鍵字,指定一個物件然後去替代它。

    函式內的this和函式外的this,函式內的this指向行為發生的主體。函式外的this都指向window沒有意思。

 

為什麼還是window?

  因為瀏覽器執行js程式碼的時候在執行chifan()這個函式的事後查詢到變數chifan的歸屬是window,在window下的變數可以寫成window.chifan函式可以寫成window.chifan().

  2.函式內的this和函式在什麼環境下定義沒有關係,而只和自己的主體有關。

  3.主題怎麼找?

     就看這個函式(方法)帶不帶“.",如果函式和方法執行帶“.”,那麼this就指向”."前面的物件,如果不帶“."就指向window。

  4.自執行函式裡面的this都指向window.

this和變數的面試題  先找this的主體是誰,然後把他換成那個主體就行了

   5.給元素中的某一個時間繫結方法,當事件觸發時,執行繫結的方法,方法中的this指向當前元素。

  重點是函式套函式的時候。

    不要管他怎麼定義,看他執行時候的主題。

360經典面試