在微信小程序中,当你在Page对象的方法或生命周期函数内部(比如onLoad
、onShow
、onReady
等)使用this
时,它是指向当前的Page对象。这意味着你可以通过this
来访问Page对象定义的data
、methods
、properties
等。
在Page对象内部定义的自定义函数,如果在Page对象的方法或生命周期函数中被调用,那么在这个函数内部使用this
时,它也会指向当前的Page对象。
但是,如果你在一个非Page对象的方法(比如一个普通的JavaScript函数)内部使用this
,或者将Page对象的方法作为回调函数传递给其他函数或事件监听器,那么this
的指向可能会改变,不再指向Page对象。为了避免这种情况,你可以使用箭头函数来保持this
的指向,或者将this
引用保存在一个变量中(通常叫做self
或that
)。
例如,保持this
指向Page对象的方法:
Page({
data: {
redPacketMin: 0.1, // 红包最小值, 单位元
redPacketMax: 5, // 红包最大值, 单位元
// ...
},
onLoad: function() {
// 使用箭头函数保持this指向Page对象
setTimeout(() => {
this.fun1();
}, 1000);
// 或者将this保存到变量中
var that = this;
someAsyncFunction(function() {
that.fun1();
});
},
fun1: function() {
// 在这里,this指向Page对象
console.log(this.data.redPacketMin);
}
// ...
});