微信小程序开发中var that =this的用法详解


Posted in Javascript onJanuary 18, 2020

在微信小程序开发中,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 }) 
    }, 
   }) 
  } 
 
 })

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

微信小程序开发中var that =this的用法详解

从报错中得知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的变量

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript获取客户端计算机硬件及系统等信息的方法
Jan 02 Javascript
js图片预加载示例
Apr 30 Javascript
JavaScript 数组- Array的方法总结(推荐)
Jul 21 Javascript
javascript html5轻松实现拖动功能
Mar 01 Javascript
微信小程序五星评分效果实现代码
Apr 06 Javascript
Koa2 之文件上传下载的示例代码
Mar 29 Javascript
JavaScript中var、let、const区别浅析
Jun 24 Javascript
vue实现一个炫酷的日历组件
Oct 08 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
Sep 06 Javascript
webpack安装配置与常见使用过程详解(结合vue)
Jun 01 Javascript
JavaScript封装单向链表的示例代码
Sep 17 Javascript
JavaScript中的宏任务和微任务详情
Nov 27 Javascript
JavaScript实现滑动门效果
Jan 18 #Javascript
JS数组方法push()、pop()用法实例分析
Jan 18 #Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 #Javascript
JS数组方法join()用法实例分析
Jan 18 #Javascript
JavaScript进制转换实现方法解析
Jan 18 #Javascript
js滚轮事件 js自定义滚动条的实现
Jan 18 #Javascript
vue实现扫码功能
Jan 17 #Javascript
You might like
php adodb连接不同数据库
2009/03/19 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
关于js类的定义
2011/06/28 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
canvas时钟效果
2017/02/16 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
js实现网页随机验证码
2020/10/19 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
Python冲顶大会 快来答题!
2018/01/17 Python
分析Python中解析构建数据知识
2018/01/20 Python
python实现多人聊天室
2020/03/31 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
阿联酋航空假期:Emirates Holidays
2018/03/20 全球购物
Linux如何压缩可执行文件
2014/03/27 面试题
员工自我鉴定范文
2013/10/06 职场文书
乡镇干部先进事迹材料
2014/02/03 职场文书
大学生职业规划书的范本
2014/02/18 职场文书
社区母亲节活动记录
2014/03/06 职场文书
给孩子的新年寄语
2014/04/08 职场文书
体育教师求职信
2014/05/24 职场文书
2014年党支部承诺书
2014/05/30 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
个人公司授权委托书范本
2014/10/12 职场文书