向Object.prototype中添加方法时,方法被无穷次执行
发布于 5 年前 作者 huwei 20062 次浏览 来自 问答

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

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

Object.prototype.foo = function() {

  wx.showModal({

    title: ‘asdf’,

    content: ‘asdf’,

  })

}

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

3 回复

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

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

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

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

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

Object.prototype.foo = function() {

  wx.showModal({

    title: ‘asdf’,

    content: ‘asdf’,

  })

}

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

代码?……

回到顶部