在微信微型应用平台(基于微信应用的javascript +本地混合)上开发性能评测工具,我试图在其原型中注入代码,例如wx.request
函数。是否可以修改定义的getter函数?
这是你将如何使用wx.request
功能:
wx.request({
url: 'test.php',
data: {
x: '' ,
y: ''
},
header: {
'content-type': 'application/json'
},
success: function(res) {
console.log(res.data)
}
})
所以为了知道请求了多长时间拍摄,而无需手动编写将所有的锚,我试图注入的代码:
var owxrequest = wx.request
wx.request = function() {
console.log('test', Date.now())
return owxrequest.apply(owxrequest, arguments)
}
这失败了,我得到了Cannot set property "prop" of #<Object> which has only a getter
错误。
所以我实现了对象必须已定义类似于:
wx = {
request: get function(){
...
}
...
}
所以,我想:
var owxrequest = wx.request
Object.defineProperty(wx, 'request', {
get: function() {
console.log('test', Date.now())
return owxrequest.apply(owxrequest, arguments)
}
})
这个错误而失败(request: fail parameter error: parameter.url should be String instead of Undefined
)。然后我想:
var owxrequest = wx.request
Object.defineProperty(wx, 'request', {
set: function() {
console.log('test', Date.now())
return owxrequest.apply(owxrequest, arguments)
}
})
这会不会引发错误,但调用wx.request()
时也没有效果...
这就是你如何定义一个吸气剂,我明白了! –
@AeroWang我也为问题中提到的错误添加了解释。请检查。 – shaochuancs