成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

善用Object.defineProperty巧妙找到修改某個變量的準(zhǔn)確代碼位置

happyhuangjinjin / 2025人閱讀

摘要:我今天的工作又遇到一個難題。前端右下角這個按鈕被設(shè)置為禁用狀態(tài)。這個按鈕的可用狀態(tài)由屬性控制。而行執(zhí)行之前,還沒有這個的屬性。我成功找到了我在尋找的給添加了的代碼位置。

我今天的工作又遇到一個難題。前端UI右下角這個按鈕被設(shè)置為"禁用(disabled)"狀態(tài)。

這個按鈕的可用狀態(tài)由屬性enabled控制。我通過調(diào)試發(fā)現(xiàn),一旦下圖第88行代碼執(zhí)行完畢之后,這個按鈕的屬性mProperties里就多出一個enabled:false的屬性。

而88行執(zhí)行之前,還沒有這個enabled:false的屬性。正是這個屬性讓按鈕進入了禁用狀態(tài)。

我單步調(diào)試setModel函數(shù),花了半個小時的時間也沒能找到這個enabled屬性到底是在哪一行代碼加進去的。

于是我只有尋求其他辦法。我想到了Object.defineProperty這個方法:

我在Chrome開發(fā)者工具里執(zhí)行如下代碼,首先根據(jù)button的ID用ui.byId方法找到這個被禁用按鈕的實例,然后用Object.defineProperty給按鈕實例的屬性集合mProperties注入一個get方法,實現(xiàn)體只有一個debugger語句。如此一來,每次button的mProperties被訪問時,都會自動觸發(fā)一個斷點。而mProperties屬性發(fā)生變化時,必定會先產(chǎn)生讀取動作,因此斷點停下來時,我通過觀察調(diào)用棧的上下文就能夠找到是哪一行代碼修改了mProperties。

var ui = sap.ui.getCore();

var button = ui.byId("button97DXvDVKUawkYgK3YQVram_64");

Object.defineProperty(button, "mProperties", { get: function(){ debugger;}});

現(xiàn)在就來試試。果然斷點自動觸發(fā)了。我成功找到了我在尋找的給mProperties添加了enabled = false的代碼位置。

要獲取更多Jerry的原創(chuàng)技術(shù)文章,請關(guān)注公眾號"汪子熙"或者掃描下面二維碼:

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/98732.html

相關(guān)文章

  • 善用Object.defineProperty巧妙找到修改某個變量準(zhǔn)確代碼位置

    摘要:我今天的工作又遇到一個難題。前端右下角這個按鈕被設(shè)置為禁用狀態(tài)。這個按鈕的可用狀態(tài)由屬性控制。而行執(zhí)行之前,還沒有這個的屬性。我成功找到了我在尋找的給添加了的代碼位置。 我今天的工作又遇到一個難題。前端UI右下角這個按鈕被設(shè)置為禁用(disabled)狀態(tài)。 showImg(https://segmentfault.com/img/remote/1460000016811187); 這...

    Turbo 評論0 收藏0
  • JS進階篇--JS apply巧妙用法以及擴展到Object.defineProperty使用

    摘要:的使用對象是由多個名值對組成的無序的集合。目標(biāo)屬性所擁有的特性返回值傳入函數(shù)的對象。是一種獲得屬性值的方法是一種設(shè)置屬性值的方法。參考相關(guān)閱讀鏈接基礎(chǔ)篇中的可枚舉屬性與不可枚舉屬性以及擴展 Math.max 實現(xiàn)得到數(shù)組中最大的一項 var array = [1,2,3,4,5]; var max = Math.max.apply(null, array); console.log(m...

    jasperyang 評論0 收藏0
  • 編寫簡單i18n庫

    摘要:因為兩次的開發(fā)維護體驗產(chǎn)生了對比,使我產(chǎn)生了不小的興趣假設(shè)一個簡單的頁面需要多語言。兩個簡單的區(qū)別就是和替換的區(qū)別。樣式模式其實就是簡單的切換。當(dāng)修改的某個值時,會觸發(fā)對應(yīng)的,并發(fā)射信號通知節(jié)點去更新。 i18n是什么?i18n(其來源是英文單詞internationalization的首末字符i和n,18為中間的字符數(shù))是國際化的簡稱。 前言 第一次接觸多語言是用野生javascri...

    txgcwm 評論0 收藏0
  • 編寫簡單i18n庫

    摘要:因為兩次的開發(fā)維護體驗產(chǎn)生了對比,使我產(chǎn)生了不小的興趣假設(shè)一個簡單的頁面需要多語言。兩個簡單的區(qū)別就是和替換的區(qū)別。樣式模式其實就是簡單的切換。當(dāng)修改的某個值時,會觸發(fā)對應(yīng)的,并發(fā)射信號通知節(jié)點去更新。 i18n是什么?i18n(其來源是英文單詞internationalization的首末字符i和n,18為中間的字符數(shù))是國際化的簡稱。 前言 第一次接觸多語言是用野生javascri...

    DevWiki 評論0 收藏0
  • js中對象屬性整理

    摘要:不管函數(shù)還是數(shù)據(jù),都可以稱為某某對象的屬性。一些細節(jié)輸出結(jié)果如下可以看出,函數(shù)是有的數(shù)據(jù)屬性是創(chuàng)建對象時定義的,所有屬性特性都是是用定義的,默認(rèn)為數(shù)據(jù)屬性,所有屬性特性默認(rèn)為。訪問器屬性暫時想到的,就是通過改變該屬性改變內(nèi)部多個屬性。 都知道js是面向?qū)ο蟮?,?chuàng)建了對象后,對象中保存的就是一組組名值對,值可以是數(shù)據(jù)類型或函數(shù)。不管函數(shù)還是數(shù)據(jù),都可以稱為某某對象的屬性。再細分,屬性可以...

    lavor 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<