微信小程序开发中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 相关文章推荐
window.onbeforeunload方法在IE下无法正常工作的解决办法
Jan 23 Javascript
js 有框架页面跳转(target)三种情况下的应用
Apr 09 Javascript
js验证电话号码与手机支持+86的正则表达式
Jan 23 Javascript
JavaScript中的console.assert()函数介绍
Dec 29 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
Jul 04 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
Dec 19 Javascript
Canvas实现动态的雪花效果
Feb 13 Javascript
JavaScript实现三级联动菜单实例代码
Jun 26 Javascript
在vue中获取token,并将token写进header的方法
Sep 26 Javascript
基于JavaScript实现贪吃蛇游戏
Mar 16 Javascript
vue操作dom元素的3种方法示例
Sep 20 Javascript
用JavaScript实现贪吃蛇游戏
Oct 23 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/06/29 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
javascript天然的迭代器
2010/10/29 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
Javascript函数的参数
2015/07/16 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
Javascript vue.js表格分页,ajax异步加载数据
2016/10/24 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
代码详解django中数据库设置
2019/01/28 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
IE9下html5初试小刀
2010/09/21 HTML / CSS
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
俄语专业毕业生推荐信
2013/10/28 职场文书
资产经营总监岗位职责
2013/12/04 职场文书
科级干部考察材料
2014/02/15 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
民族学专业求职信
2014/07/28 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
财产保全担保书
2015/01/20 职场文书
2015国庆节感想
2015/08/04 职场文书
python基础之//、/与%的区别详解
2022/06/10 Python
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python