微信小程序开发中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中Iframe之间传值的方法
Mar 11 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
Sep 30 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
Feb 19 Javascript
jquery中EasyUI实现异步树
Mar 01 Javascript
JavaScript提高网站性能优化的建议(二)
Jul 24 Javascript
Bootstrap 模态框实例插件案例分析
Dec 28 Javascript
angular 基于ng-messages的表单验证实例
May 04 Javascript
vue2.x+webpack快速搭建前端项目框架详解
Nov 30 Javascript
vue引入js数字小键盘的实现代码
May 14 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
Aug 07 Javascript
JavaScript 面向对象基础简单示例
Oct 02 Javascript
如何基于JavaScript判断图片是否加载完成
Dec 28 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
List the Codec Files on a Computer
2007/06/18 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
python 公共方法汇总解析
2019/09/16 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
Python 从attribute到property详解
2020/03/05 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
利用纯html5绘制出来的一款非常漂亮的时钟
2015/01/04 HTML / CSS
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
全球性的女装店:storets
2019/06/12 全球购物
某公司的.net工程师面试题笔试题
2013/11/22 面试题
师生聚会感言
2014/01/26 职场文书
大学生安全责任书
2014/07/25 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
杭白菊导游词
2015/02/10 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python