微信小程序开发中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 放大镜 v1.0 基于Yui2 实现的放大镜效果
Mar 08 Javascript
jquery操作 iframe的方法
Dec 03 Javascript
JavaScript常用本地对象小结
Mar 28 Javascript
基于BootstrapValidator的Form表单验证(24)
Dec 12 Javascript
浅述节点的创建及常见功能的实现
Dec 15 Javascript
jQuery Validate插件自定义验证规则的方法
Dec 27 Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
Apr 18 jQuery
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
Aug 24 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
Sep 25 Javascript
angular将html代码输出为内容的实例
Sep 30 Javascript
vue+node 实现视频在线播放的实例代码
Oct 19 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 裁剪图片成固定大小代码方法
2009/09/09 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
python简单实现AES加密和解密
2019/03/28 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
Python秒算24点实现及原理详解
2019/07/29 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
承办会议欢迎词
2014/01/17 职场文书
2014年商场工作总结
2014/11/22 职场文书
音乐课外活动总结
2015/05/09 职场文书
2016年十一促销广告语
2016/01/28 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android
详解Python中__new__方法的作用
2022/03/31 Python