微信小程序var that=this
时间: 2023-04-25 14:00:22 浏览: 56
var that=this是JavaScript语言中的一行代码,意思是将当前对象的引用赋值给变量that。在微信小程序中,通常会使用这种方式来解决作用域问题,以便在函数内部访问到外部的this对象。
相关问题
微信小程序中的that和this
在微信小程序中,that和this都是用来指代当前页面对象的指针,但它们在使用上有所不同。
this是JavaScript中的关键字,表示当前执行代码的对象。在微信小程序中,this指向的是当前页面对象,在页面中直接使用this可以访问页面中的数据和方法。但是,在某些回调函数(如setTimeout、setInterval或者网络请求的回调函数等)中,this的指向可能会发生改变,此时需要使用bind()方法绑定this指向,或者使用箭头函数来维持this的指向不变。
that则是开发者自己定义的变量名,通常用来保存this指向的对象,以便在回调函数中访问页面的数据和方法。这是因为在一些回调函数中,this的指向可能会发生改变,导致无法访问页面中的数据和方法。因此,可以在页面的生命周期函数中通过var that = this;来保存this指向的对象,然后在回调函数中通过that来访问页面的数据和方法,从而避免了this指向发生改变的问题。
微信小程序this和that的区别
在微信小程序中,this 和 that 都是指向当前页面对象的指针,但是它们的作用域不同。
this 指向当前使用的组件或者页面对象,它的作用域是当前函数作用域。在事件处理函数中,this 指向触发事件的组件对象。
that 通常是在函数作用域中声明一个变量,将 this 赋值给 that,用于保存 this 的作用域。因为在一些函数嵌套时,this 的作用域可能会发生改变,使用 that 可以避免作用域的改变。在事件处理函数中,that 通常用于保存 this 的作用域,以便在函数嵌套时能够正确访问到 this 对象。
例如,以下代码中的 that 用于保存 this 的作用域,以便在 success 回调函数中能够正确访问 this 对象:
```
Page({
data: {
message: 'Hello World!'
},
onLoad: function () {
var that = this;
wx.request({
url: 'https://example.com/api',
success: function (res) {
that.setData({
message: res.data.message
})
}
})
}
})
```
需要注意的是,微信小程序中的 this 和 that 只是指针,它们并不是 JavaScript 中的关键字或者保留字。在实际开发中,可以根据需要使用 this 或 that,以便正确访问当前页面对象的作用域。