myPage.js
1.2 KB
let data
// 这里data从app.js中传入,为了获取data的一些参数
export function init(_data) {
data = _data
// 重写page函数,增加阿里云监控和日志记录
let oldPage = Page
Page = function(obj) {
// 重写onShow方法,用一个变量保存旧的onShow函数
console.log(obj)
let keys = Object.keys(obj)
console.log(keys)
let oldOnShow = obj.onShow
obj.onShow = function() {
console.log(111)
// 此处不能写成oldOnShow(),否则没有this,this.setData等方法为undefined。这里的this在Page构造函数实例化的时候才会指定
// 在Page构造函数实例化的时候,小程序会将当前的Page对象的原型链(__proto__)增加很多方法,例如setData。当前的obj没有setData
// 上面一段是我猜的
oldOnShow.call(this)
}
// 重写onHide方法,用一个变量保存旧的onHide函数
let oldOnHide = obj.onHide
obj.onHide = function() {
console.log(2222)
// 此处不能写成oldOnHide(),否则没有this,this.setData等方法为undefined。这里的this在Page对象实例化的时候才会指定
oldOnHide.call(this)
}
return oldPage(obj)
}
}