收藏
回答

向Object.prototype中添加方法时,方法被无穷次执行

问题模块
API和组件


我向Object.prototype中添加方法时,方法被无穷次执行。


就是Page({...})前写了这么一段:

Object.prototype.foo = function() {

  wx.showModal({

    title: 'asdf',

    content: 'asdf',

  })

}

在随便哪个文件的最外层写上这句,都会出问题的。


最后一次编辑于  2017-06-09  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

3 个回答

  • maq
    maq
    2017-06-05

    代码?……

    2017-06-05
    赞同
    回复
  • 小廉
    小廉
    2017-06-09

    就是Page({...})前写了这么一段:

    Object.prototype.foo = function() {

      wx.showModal({

        title: 'asdf',

        content: 'asdf',

      })

    }

    在随便哪个文件的最外层写上这句,都会出问题的。

    2017-06-09
    赞同
    回复
  • maq
    maq
    2017-06-09

    查了一下,真相是这样的——


    基础库里面有一个监听器列表(Array 对象),所有加入这个列表的 function 在某些事件触发的时候(比如 nAppRoute/onAppRouteDone/...)都能够被调用。


    悲催的是,基础库在遍历这个监听器列表的时候,没有使用数组遍历,而是使用了 for-in,那么也就是说,所有你以 Object.prototype.xxx 方式添加进去的东西,都会在这个过程中被遍历出来并当做函数来调用。


    如果你添加的这个函数恰好触发了更多的事件,那么就无限接力下去了……

    2017-06-09
    赞同
    回复