js閉包中的this(匿名函數中的this指向的是windows)


 

 

 1.普通函數中的this指向的是對象,匿名函數中的this指向的是windows,和全局變量一樣

 2.讓匿名函數中的this指向對象的兩種方法

       可以使用對象冒充強制改變this:call()、apply()

       將this賦值給一個變量,閉包可以訪問這個變量

 一、this問題

匿名函數的執行環境具有全局性,因此其this對象通常指向window(當然,在通過call()或者apply()改變函數執行環境的情況下,this就會指向其他對象)

 

為什么匿名函數沒有取得其包含作用域(或外部作用域)的this對象呢?

每個函數在被調用時都會自動取得兩個特殊變量:this和arguments。內部函數在搜索這兩個變量時,只會搜索到其活動對象為止,因此永遠不可能直接訪問外部函數中的這兩個變量。

二、解決方法

(1)把外部作用域中的this對象保存在一個閉包能夠訪問到的變量里,就可以讓閉包訪問該對象了。

 

2 可以使用對象冒充強制改變this:call()、apply()

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM