摘要:自執行函數中的永遠是給元素的某一個事件綁定方法,當事件出發的時候,執行對應的方法,方法中的是當前元素。
JS中的this代表的是當前行為執行的主體,JS中的context代表的是當前行為執行的環境,this是誰和函數在哪定義的以及函數在哪執行的沒有任何的關系,如何區分this?
一、非嚴格模式下
1、函數執行,首先看函數名前面是否有‘.’,有的話,‘.’前面是誰,this就是誰,沒有的話this就是window。
2、自執行函數中的this永遠是window
3、給元素的某一個事件綁定方法,當事件出發的時候,執行對應的方法,方法中的this是當前元素。
4、在構造函數模式中,this.xxx = xxx,this就是當前類的實例
5、用call、apply、bind改變this
(五種情況下第五種優先)
二、嚴格模式下
1、自執行函數中的this永遠是undefined
2、函數執行,首先看函數名前面是否有點,有的話,點前面是誰,this就是誰,沒有的話this就是undefined
結論:嚴格模式下的this相對于非嚴格模式下的this主要區別在于:對于js代碼中沒有執行主體的情況下,非嚴格模式下默認都是window執行的,所以this指向的是window;但是在嚴格模式下,沒有寫就是沒有執行主體,this指向的是undefined。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81248.html
摘要:其實在之前的工廠模式里面,也存在這個問題,不過工廠模式更徹底,直接完全創建一個新對象,而構造函數模式的話只是方法會被重新創建。 我來重新學習 javascript 的面向對象(part 1) 很多job 的描述都說要求精通 javascript 面向對象編程,但是根據一般的套路,寫精通其實就是熟練,寫熟練其實就是一般,寫一般其實就是懵逼! showImg(https://segment...
JavaScript 三種方法,可以確定一個值到底是什么類型。 typeofinstanceofObject.prototype.toString 為什么需要確定類型 ? ? 只有確定類型的情況,才知道當前操作對象擁有哪些功能; 比如使用 push,unshfit,shfit 等方法時,那么其必須為數組類型時才能正確使用; ? 當某些情況添加類型檢查時,這樣代碼更加健壯,安全; typ...
摘要:函數表達式函數聲明立即執行函數表達式。變量提升所有的聲明變量和函數都會被移動到各自作用域的最頂端,這個過程稱為提升。嚴格模式綁定到,否則為全局對象。這種設置為單向,不可取消。如果值為則禁止刪除這個屬性。是否為可枚舉的。 變量賦值 變量賦值分為兩個動作: 如果當前沒有聲明過,那編譯器會在當前作用域聲明一個。 運行時引擎會在作用域查找該變量,如果找到就對其賦值。 查詢有:LHS查詢和R...
摘要:然而,異步函數不會立即被推入調用堆棧,而是會被推入任務隊列,并在調用堆棧為空后執行。將事件從任務隊列傳輸到調用堆棧稱為事件循環。我們調用接受和或返回另一個函數稱為高階函數的函數。 為了保證可讀性,本文采用意譯而非直譯 想閱讀更多優質文章請猛戳GitHub博客,一年百來篇優質文章等著你! 1.如何理解 JS 中的this關鍵字? JS 初學者總是對 this 關鍵字感到困惑,因為與其他現...
閱讀 3351·2021-10-13 09:40
閱讀 2586·2021-10-08 10:17
閱讀 3989·2021-09-28 09:45
閱讀 922·2021-09-28 09:35
閱讀 1805·2019-08-30 10:51
閱讀 2898·2019-08-26 12:11
閱讀 1645·2019-08-26 10:41
閱讀 3091·2019-08-23 17:10