最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置

来源:动视网 责编:小采 时间:2020-11-27 22:05:33
文档

使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置

使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置:前言 本文主要给大家介绍的是关于使用Object.defineProperty巧妙找到修改某个变量的准确代码位置的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 语法 Object.defineProperty(obj, prop, descriptor)
推荐度:
导读使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置:前言 本文主要给大家介绍的是关于使用Object.defineProperty巧妙找到修改某个变量的准确代码位置的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 语法 Object.defineProperty(obj, prop, descriptor)


参数

  • obj 需要定义属性的对象。
  • prop 需被定义或修改的属性名。
  • descripter 需被定义或修改的属性的描述符。
  • 发现问题

    最近的工作又遇到一个难题。前端UI右下角这个按钮被设置为"禁用(disabled)"状态。

    这个按钮的可用状态由属性enabled控制。我通过调试发现,一旦下图第88行代码执行完毕之后,这个按钮的属性mProperties里就多出一个enabled:false的属性。

    而88行执行之前,还没有这个enabled:false的属性。正是这个属性让按钮进入了禁用状态。

    我单步调试setModel函数,花了半个小时的时间也没能找到这个enabled属性到底是在哪一行代码加进去的。

    解决方法

    于是我只有寻求其他办法。我想到了Object.defineProperty这个方法:

    我在Chrome开发者工具里执行如下代码,首先根据button的ID用ui.byId方法找到这个被禁用按钮的实例,然后用Object.defineProperty给按钮实例的属性集合mProperties注入一个get方法,实现体只有一个debugger语句。如此一来,每次button的mProperties被访问时,都会自动触发一个断点。而mProperties属性发生变化时,必定会先产生读取动作,因此断点停下来时,我通过观察调用栈的上下文就能够找到是哪一行代码修改了mProperties。

    var ui = sap.ui.getCore();
    
    var button = ui.byId("button97DXvDVKUawkYgK3YQVram_");
    
    Object.defineProperty(button, "mProperties", { get: function(){ debugger;}});


    现在就来试试。果然断点自动触发了。我成功找到了我在寻找的给mProperties添加了enabled = false的代码位置。


    总结

    文档

    使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置

    使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置:前言 本文主要给大家介绍的是关于使用Object.defineProperty巧妙找到修改某个变量的准确代码位置的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 语法 Object.defineProperty(obj, prop, descriptor)
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top