微信小程序开发中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 相关文章推荐
FF IE兼容性的修改小结
Sep 02 Javascript
JavaScript DOM学习第一章 W3C DOM简介
Feb 19 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
Mar 01 Javascript
原生javascript实现图片按钮切换
Jan 12 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
Aug 14 Javascript
全面解析Bootstrap中form、navbar的使用方法
May 30 Javascript
微信小程序 loading(加载中提示框)实例
Oct 28 Javascript
Centos7 中安装 Node.js v4.4.4
Nov 03 Javascript
js实现表单提交后不重新刷新当前页面
Nov 30 Javascript
bootstrap Table的一些小操作
Nov 01 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
Nov 07 Javascript
微信小程序数据统计和错误统计的实现方法
Jun 26 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
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
详解php中 === 的使用
2016/10/24 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
filemanage功能中用到的common.js
2007/04/08 Javascript
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
Vuex 入门教程
2018/01/10 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
python list 合并连接字符串的方法
2013/03/09 Python
python时间整形转标准格式的示例分享
2014/02/14 Python
python字符串编码识别模块chardet简单应用
2015/06/15 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
业务代表的岗位职责
2013/11/16 职场文书
校园自助餐厅的创业计划书
2013/12/26 职场文书
给校长的建议书600字
2014/05/15 职场文书
机械工程师岗位职责
2014/06/16 职场文书
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python
Java Spring读取和存储详细操作
2022/08/05 Java/Android