微信小程序开发中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 相关文章推荐
缓动函数requestAnimationFrame 更好的实现浏览器经动画
Dec 07 Javascript
Jquery实现动态切换图片的方法
May 18 Javascript
jQuery+CSS实现简单切换菜单示例
Jul 27 Javascript
如何使用jquery实现文字上下滚动效果
Oct 12 Javascript
微信小程序  自定义创建详细介绍
Oct 27 Javascript
Bootstrap CSS组件之导航条(navbar)
Dec 17 Javascript
Javascript实现数组中的元素上下移动
Apr 28 Javascript
20行JS代码实现网页刮刮乐效果
Jun 23 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
Aug 10 Javascript
node上的redis调用优化示例详解
Oct 30 Javascript
JavaScript中this的学习笔记及用法整理
Feb 17 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
Jan 20 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来处理多个提交任务
2006/10/09 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
js自定义input文件上传样式
2018/10/26 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
python线程信号量semaphore使用解析
2019/11/30 Python
python如何实现图片压缩
2020/09/11 Python
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
国际商务专业学生个人的自我评价
2013/09/28 职场文书
家居饰品店创业计划书
2014/01/31 职场文书
趣味活动策划方案
2014/02/08 职场文书
委托协议书范本
2014/04/22 职场文书
招股说明书范本
2014/05/06 职场文书
企业承诺书格式
2014/05/21 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
银行员工犯错检讨书
2014/09/16 职场文书
英文辞职信范文
2015/05/13 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
体育教师教学随笔
2015/08/15 职场文书
入党申请书格式
2019/06/20 职场文书
SQLServer之常用函数总结详解
2021/08/30 SQL Server