微信小程序开发中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 相关文章推荐
js 新浪的一个图片播放图片轮换效果代码
Jul 15 Javascript
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
Jun 28 Javascript
JavaScript实用技巧(一)
Aug 16 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
Jan 10 Javascript
javascript生成随机大小写字母的方法
Feb 20 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
Jul 21 Javascript
jquery表单对象属性过滤选择器实例分析
May 18 Javascript
javascript图片预加载实例分析
Jul 16 Javascript
js解决movebox移动问题
Mar 29 Javascript
jQuery实现点击行选中或取消CheckBox的方法
Aug 01 Javascript
小程序scroll-view组件实现滚动的示例代码
Sep 20 Javascript
javascript实现文本框标签验证的实例代码
Oct 14 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 print类函数使用总结
2010/06/25 PHP
php类中private属性继承问题分析
2012/11/01 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
javascript 类方法定义还是有点区别
2009/04/15 Javascript
JS 面向对象的5钟写法
2009/07/31 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
Python标准库inspect的具体使用方法
2017/12/06 Python
Python WSGI的深入理解
2018/08/01 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
详解python UDP 编程
2020/08/24 Python
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
租车协议书范本2014
2014/11/17 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server