向Object.prototype中添加方法时,方法被无穷次执行
我向Object.prototype中添加方法时,方法被无穷次执行。
就是Page({…})前写了这么一段:
Object.prototype.foo = function() {
wx.showModal({
title: ‘asdf’,
content: ‘asdf’,
})
}
在随便哪个文件的最外层写上这句,都会出问题的。
3 回复
查了一下,真相是这样的——
基础库里面有一个监听器列表(Array 对象),所有加入这个列表的 function 在某些事件触发的时候(比如 nAppRoute/onAppRouteDone/…)都能够被调用。
悲催的是,基础库在遍历这个监听器列表的时候,没有使用数组遍历,而是使用了 for-in,那么也就是说,所有你以 Object.prototype.xxx 方式添加进去的东西,都会在这个过程中被遍历出来并当做函数来调用。
如果你添加的这个函数恰好触发了更多的事件,那么就无限接力下去了……