温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

微信小程序开发中var that=this的用法是怎样的

发布时间:2021-10-13 09:56:40 来源:亿速云 阅读:159 作者:柒染 栏目:开发技术

微信小程序开发中var that=this的用法是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

在微信小程序开发中,var that =this的声明很常见。举个例子,代码如下!

示例代码1

//index.js Page({   data: {  toastHidden: true,  },   loadData: function () {   var that = this//这里声明了that;将this存在that里面   wx.request({    url: 'test.php',    data: {a: 'a', b: 'b'},    header: {    'content-type': 'application/json'    },    success(res) {      that.setData({ toastHidden: false }) //这里使用了that,这样就可以获取Page({})对象    },   })  }  })

在代码中第9行声明了var that =this;第17行使用了that。

如果不声明var that =this,且that改成this,代码如下!

示例代码2

//index.js  Page({   data: {   toastHidden: true,  },   loadData: function () {   wx.request({   url: 'test.php',   data: {a: 'a', b: 'b'},   header: {    'content-type': 'application/json'   },   success(res) {    this.setData({ toastHidden: false })    },   })  }  })

此时运行代码就会报以下错误!

从报错中得知setData这个属性读不到,为何读不到?这跟this关键字的作用域有关!

this作用域分析:

1.在Page({})里面,this关键字指代Page({})整个对象

2.因此可以通过this关键字访问或者重新设置Page({})里data的变量

3.然而在loadData函数中使用了wx.request({})API这个方法导致在wx.request({})里没办法使用this来获取Page({})对象

4.虽然在wx.request({})里没法使用this获取Page({})对象,但是可以在wx.request({})外面先把this存在某个变量中,所以就有了var that =this这个声明。此时that指代Page({})整个对象,这样子就可以在wx.request({})里使用that访问或者重新设置Page({})里data的变量

看完上述内容,你们掌握微信小程序开发中var that=this的用法是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI