当前位置: 首页 > Web前端 > HTML5

varthat=this在微信小程序开发中的用法

时间:2023-04-05 19:29:33 HTML5

在微信小程序开发中,varthat=this的声明很常见。比如代码如下!示例代码11//index.js2Page({34data:{5toastHidden:true,6},78loadData:function(){9varthat=this//declaresthathere;storethisinthat10wx.request({11url:'test.php',12数据:{a:'a',b:'b'},13header:{14'content-type':'application/json'15},16success(res){17that.setData({toastHidden:false})//这里使用that可以得到Page({})对象18},19})20}2122})在代码行9声明varthat=this;第17行使用它。如果不声明varthat=this,把that改成this,代码如下!示例代码21//index.js2Page({34data:{5toastHidden:true,6},78loadData:function(){9wx.request({10url:'test.php',11data:{a:'a',b:'b'},12header:{13'content-type':'application/json'14},15success(res){16this.setData({toastHidden:false})17},18})19}2021})这时候运行代码会报如下错误!从报错中得知属性setData无法读取,为什么读取不到呢?这与this关键字的范围有关!这个作用域分析:1.在Page({})中,this关键字指的是Page({})的整个对象2.因此Page({})中data的变量可以通过this关键字访问或重置3.但是在loadData函数中使用wx.request({})API方法导致无法在wx.request({})中使用this获取Page({})对象4.虽然在wx.request({})不能用this来获取Page({})对象,但是可以把this存放在wx.request({})外面的一个变量中,所以就有了varthat=this的语句。此时that引用了Page({})的整个对象,这样你就可以在wx.request({})中使用它来访问或重置Page({})中data的变量