摘要:測試一下,在瀏覽器里執行上述代碼,發現斷點按照我們期望的被觸發了從調用棧也能發現確實是這一行代碼觸發的斷點,我們自己注冊的屬性修改監聽器確實工作了。
我們在開發一些大型前端項目時,會遇到這樣一種情況,某個變量上有個字段。我們想知道是哪一段程序修改了這個變量上的字段。比如全局變量window上我們自定義了一個新字段_name,我們想知道到底有哪些程序給這個字段賦了值。
一行行地調試肯定太費時間了。如果window這個變量的_name字段被程序賦值時,能執行我們自己實現的一個監聽器,這樣不就方便多了么?
監聽器的實現很簡單:
使用Object對象自帶的方法defineProperty, 第一個參數為要監聽的對象window,第二個參數為要監聽的對象字段名稱,_name。
第三個參數是一個對象,屬性為set,意思是我們想監聽window._name被賦值的這個事件。屬性set的值為一個JavaScript函數,即我們自己定義的監聽器。這個監聽器,當window._name被其他JavaScript函數修改之后,就會觸發。
測試一下,在瀏覽器里執行上述代碼,發現斷點按照我們期望的被觸發了:
從調用棧也能發現確實是window._name = "2"這一行代碼觸發的斷點,我們自己注冊的屬性修改監聽器確實工作了。
要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98610.html
摘要:測試一下,在瀏覽器里執行上述代碼,發現斷點按照我們期望的被觸發了從調用棧也能發現確實是這一行代碼觸發的斷點,我們自己注冊的屬性修改監聽器確實工作了。 我們在開發一些大型前端項目時,會遇到這樣一種情況,某個變量上有個字段。我們想知道是哪一段程序修改了這個變量上的字段。比如全局變量window上我們自定義了一個新字段_name,我們想知道到底有哪些程序給這個字段賦了值。 一行行地調試肯定太...
摘要:事件事件就是瀏覽器告知程序,用戶的行為,用戶點擊了頁面中的某個按鈕或者用戶輸入用戶名或密碼等操作可以稱為事件事件的類型事件根據使用的場景不同,可以分為如下幾種依賴于設備的輸入事件鍵盤事件和鼠標事件,這些事件都是直接和設備相關的獨立于設備的輸 事件 事件就是瀏覽器告知JavaScript程序,用戶的行為,用戶點擊了HTML頁面中的某個按鈕或者用戶輸入用戶名或密碼等操作可以稱為事件 事件的...
摘要:往往定義組件的構造器后,不需要手動的進行初始化,而是在其他組件的模板中當成標簽來使用,這時候需要調用注冊成組件。這樣設計的目的是防止從子組件意外改變父級組件的狀態,從而導致應用的數據流向難以理解。 上節說到組件https://segmentfault.com/a/1190000009236700,這一節繼續來學習組件: 原文博客地址,歡迎學習交流:點擊預覽從github上獲取本文代碼:...
摘要:書接上文瀏覽器內核之資源加載與網絡棧本文介紹的模型之后,深入的核心部分,剖析的解釋器是如何將從網絡或者本地文件獲取的字節流轉成內部表示的結構樹。事件處理最重要就是事件捕獲和事件冒泡這兩種機制。 showImg(https://segmentfault.com/img/remote/1460000016215814); 微信公眾號:愛寫bugger的阿拉斯加如有問題或建議,請后臺留言,我...
摘要:瀏覽器中的瀏覽器中的通常稱為客戶端的客戶端對象是所有客戶端特性和的主要接入點。瀏覽器不會執行之間的代碼中的事件處理程序當腳本所在的文件被載入的時候。可以達到延遲腳本的執行,直到文檔載入和解析完成,才方可操作。 web瀏覽器中的JavaScriptweb瀏覽器中的js通常稱為客戶端的JavaScript 客戶端 JavaScript window對象是所有客戶端JavaScript特性和...
閱讀 2815·2023-04-25 18:46
閱讀 705·2021-11-19 09:40
閱讀 2072·2021-09-28 09:36
閱讀 3378·2021-09-10 11:11
閱讀 3459·2019-08-30 15:55
閱讀 1800·2019-08-30 15:54
閱讀 2593·2019-08-29 16:16
閱讀 3541·2019-08-29 15:08