先上代码:
var biData = {
wxApp: App,
wxPage: Component,
log(funcName, self, argvs) {
console.log("开始")
console.log("function name", funcName)
console.log("参数:", argvs)
console.log("页面:", (self.route ? self.route : "app中的方法"))
console.log("结束")
},
hook(funcName, callback) {
let c = callback
console.log("hook funcName",funcName)
console.log("hook callback",callback)
return function() {
biData.log(funcName, this, arguments)
c.apply(this, arguments)
}
},
instrument(value, type) {
// console.log("type------------", type)
// console.log("value------------", value.data)
for (let key in value.data) {
// console.log("value[key]1", value.data[key])
if (typeof value.data[key] === 'function') {
console.log("value[key]2", value.data[key])
value.data[key] = this.hook(key, value.data[key])
}
}
return value
},
rewriteApp(e) {
console.log("rewriteApp", e)
return biData.wxApp(biData.instrument(e, "App"))
},
rewritePage(e) {
console.log("rewritePage", e)
return biData.wxPage(biData.instrument(e, "Component"))
},
appHandlerFuns: ['onShow', 'onLanch', 'onError'],
pageHandlerFuns: ['onShow', 'onLanch', 'onError']
}
App = biData.rewriteApp
Component = biData.rewritePage
在以上的代码中,根据多次测试发现,无法在最后将覆写好的方法重新指向原本的方法。
原生小程序代码没有问题,用uniApp编译的小程序就不行,请问如何处理能解决这个指针问题呢?