扫描小程序码分享
我向Object.prototype中添加方法时,方法被无穷次执行。
就是Page({...})前写了这么一段:
Object.prototype.foo = function() {
wx.showModal({
title: 'asdf',
content: 'asdf',
})
}
在随便哪个文件的最外层写上这句,都会出问题的。
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
查了一下,真相是这样的——
基础库里面有一个监听器列表(Array 对象),所有加入这个列表的 function 在某些事件触发的时候(比如 nAppRoute/onAppRouteDone/...)都能够被调用。
悲催的是,基础库在遍历这个监听器列表的时候,没有使用数组遍历,而是使用了 for-in,那么也就是说,所有你以 Object.prototype.xxx 方式添加进去的东西,都会在这个过程中被遍历出来并当做函数来调用。
如果你添加的这个函数恰好触发了更多的事件,那么就无限接力下去了……
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
代码?……
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
查了一下,真相是这样的——
基础库里面有一个监听器列表(Array 对象),所有加入这个列表的 function 在某些事件触发的时候(比如 nAppRoute/onAppRouteDone/...)都能够被调用。
悲催的是,基础库在遍历这个监听器列表的时候,没有使用数组遍历,而是使用了 for-in,那么也就是说,所有你以 Object.prototype.xxx 方式添加进去的东西,都会在这个过程中被遍历出来并当做函数来调用。
如果你添加的这个函数恰好触发了更多的事件,那么就无限接力下去了……
就是Page({...})前写了这么一段:
Object.prototype.foo = function() {
wx.showModal({
title: 'asdf',
content: 'asdf',
})
}
在随便哪个文件的最外层写上这句,都会出问题的。
代码?……