JavaScript中的this如何區分

JS中的this表明的是當前行爲執行的主體,JS中的context表明的是當前行爲執行的環境,this是誰和函數在哪定義的以及函數在哪執行的沒有任何的關係,如何區分this?
1、非嚴格模式下
一、函數執行,首先看函數名前面是否有‘.’,有的話,‘.’前面是誰,this就是誰,沒有的話this就是window。
二、自執行函數中的this永遠是window
三、給元素的某一個事件綁定方法,當事件出發的時候,執行對應的方法,方法中的this是當前元素。
四、在構造函數模式中,this.xxx = xxx,this就是當前類的實例
五、用call、apply、bind改變this
(五種狀況下第五種優先)
2、嚴格模式下
一、自執行函數中的this永遠是undefined
二、函數執行,首先看函數名前面是否有點,有的話,點前面是誰,this就是誰,沒有的話this就是undefinedapp

結論:嚴格模式下的this相對於非嚴格模式下的this主要區別在於:對於js代碼中沒有執行主體的狀況下,非嚴格模式下默認都是window執行的,因此this指向的是window;可是在嚴格模式下,沒有寫就是沒有執行主體,this指向的是undefined。函數

相關文章
相關標籤/搜索