在小程序开发中,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 })  },  })  }  })

此时运行代码就会报以下错误!

从报错中得知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的变量

var that =this的用法详解相关推荐

  1. javaScript中const,var,let区别与用法详解

    业务场景:今天想从正则表达式数组对象取出几个参数的值,发现好多人都用的const声明的变量,这里一起总结一下吧. 上一篇-->前端使用正则表达式获取地址栏URL参数的值并将需要的参数值展示在页面 ...

  2. 【JS基础】var formdata=new FormData() 【FormData用法详解 】

    FormData用法详解 简介 FormData 对象的使用: 1.用一些键值对来模拟一系列表单控件:即将form 中表单元素的 name 与 value 组装成一个 queryString 2.异步 ...

  3. Ext.Net学习笔记22:Ext.Net Tree 用法详解

    上面的图片是一个简单的树,使用Ext.Net来创建这样的树结构非常简单,代码如下: <ext:TreePanel runat="server"><Root> ...

  4. js数组中foEach和map的用法详解 jq中的$.each和$.map

    数组中foEach和map的用法详解 相同点: 1.都是循环遍历数组(仅仅是数组)中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项value, ...

  5. Linux下的awk用法详解

    Linux下的awk用法详解 一.awk介绍 二.awk的语法 三.awk常见用法 四.awk其他用法 五.awk语言特性 一.awk介绍 1.AWK 是一种处理文本文件的语言,是一个强大的文本分析工 ...

  6. 68.connect-flash 用法详解 req,flash()

    转自:http://yunkus.com/connect-flash-usage/ connect-flash 用法详解  前端工具  2016-10-05  2016-10-05  朝夕熊  11 ...

  7. 教程-Delphi中Spcomm使用属性及用法详解

    Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...

  8. Extjs Window用法详解 3 打印具体应用,是否关掉打印预览的界面

    Extjs Window用法详解 3 打印具体应用,是否关掉打印预览的界面 Extjs 中的按钮元素 { xtype: 'buttongroup', title: '打印', items: [ me. ...

  9. php sprintf 后面补0,PHP数字前补0的自带函数sprintf 和number_format的用法(详解)

    下面小编就为大家带来一篇PHP数字前补0的自带函数sprintf 和number_format的用法(详解).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 很多时候我们 ...

  10. fileinput 时间_JavaScript_Bootstrap Fileinput文件上传组件用法详解,最近时间空余,总结了一些关...

    最近时间空余,总结了一些关于bootstrap fileinput组件的一些常见用法,特此分享到phpstudy平台,供大家参考,同时也方便以后的查找.本文写的不好还请见谅. 一.效果展示 1.原始的 ...

最新文章

  1. 监控告警满飞天,Netflix 运维如何做到在家睡到自然醒...
  2. [macOS]一些基础控件
  3. linux安装和配置 mysql、redis 过程中遇到的问题记录(转)
  4. ruby的module与Java的interface以及C++的friend
  5. 神经网络为什么要加偏置?---bias与费米能级εF
  6. java nio 文件_Java nio 的文件处理
  7. PyCharm集成Anaconda3环境下安装 腾讯优图报错 ERROR: Could not install packages due to an EnvironmentError
  8. 计算机控制lc72131,lc72131(1)
  9. 个人Typech情侣主题Cupid模板
  10. 网页小菜单动画 网格分类菜单特效源码
  11. Python批量重命名Maya场景中的3D物体
  12. [Ext JS 4] 实战之Grid, Tree Gird 动态添加列续(性能考虑)
  13. AirCard 750 GPRS无线上网卡的问题及随想
  14. 2018-2019-1 20189208《Linux内核原理与分析》第九周作业
  15. Java基础篇:嵌套 switch 语句
  16. Fiddler工具使用介绍三
  17. 职场篇(一):明哥的职场礼仪七堂课笔记
  18. Linux常见系统故障排除
  19. ROG GL552VW BIOS 编程器官方固件
  20. linux系统清理命令行,告诉你Ubuntu系统较全面清理的方法及命令

热门文章

  1. 15天助你掌握问卷统计与Spss实战
  2. Windows 使用 Detours 进行 HOOK
  3. Roslyn入门(1):一个简单修改C#代码的例子
  4. php spider 参数详解,利用phpspider爬取网站数据
  5. Mysql分页查询出现重复数据
  6. sketch插件 android,用这个免费的 Sketch 插件,帮你完美还原安卓界面!
  7. 省市县联动列表html代码,若依添加省市县联动三级菜单
  8. Day 11 - 视频转换成图片
  9. python set去重
  10. photoshop基础操作集合01