微信小程序在获取userinfo的过程中采用this碰到一些问题

我login的success回调函数为

success: function(res) {if(res.statusCode == 200) {console.log(res.data)this.globalData.sessionId = res.data.sessionId}

此处的this会报错如下

Cannot read property 'globalData' of null;

然后我查看了app.js另外一处的success回调函数

success: res => {// 可以将 res 发送给后台解码出 unionIdthis.globalData.userInfo = res.userInfo// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回// 所以此处加入 callback 以防止这种情况if (this.userInfoReadyCallback) {this.userInfoReadyCallback(res)}

而此处的this有效,我怀疑是success: function(res) {} 和 success: res => {}的区别,于是我修改了第一处的代码为

success: res => {if(res.statusCode == 200) {console.log(res.data)this.globalData.sessionId = res.data.sessionId}

然后代码跑通了

如果不想修改回调函数,可以在app.js中增加var that = this,然后此处修改this为that即可。

目前没有没有详细了解相关html和js的知识,目前只发现这两种用法在this使用情况上的区别,另外有没有其他的区别尚不得而知,希望有了解相关知识的人评论指正。

————————————————————————分割线————————————————————————

箭头函数中this指向window(Page)

而采用如下方式时:

xxx: function() {}

执行xxx就执行了一个匿名函数,其中的this指向包含xxx这个键的对象(js中什么东西都能是对象)。

评论中有人问是不是建议用success: res => {},并不是这个意思。用哪个方式取决于项目,要考虑之前说的this指向问题:你想要this指向哪个对象?如果你想用的就在包含xxx的这个map中,就没必要用箭头函数,而且老浏览器不支持ES6语法。如果你需要的在window(page)对象下,就可以用箭头函数。

或者在外部用另外一个变量储存指向window(page)的this

或者在匿名函数中采用闭包,也可以解决这个问题,不过函数中再写个函数来实现闭包的情形很少

success: function(res) {} 和 success: res = {}相关推荐

  1. success: function ()和success: res=> ()有什么区别

    success: function ()和success: res=> ()有什么区别 问题来源: 扫码签到的时候签到成功了,但是没有提醒图标(写了代码),仔细对比了一下up的代码,发现了一点点 ...

  2. jQuery ajax请求成功且返回了数据,但是不进success:function()

    2019独角兽企业重金招聘Python工程师标准>>> 1.状态码返回200--表明服务器正常响应了客户端的请求: 2.通过firebug和IE的httpWatcher可以看出服务器 ...

  3. ajax function不执行,ajax的success: function (data)不执行怎么回事?

    我有如下js函数 function poll() { console.log("id is: " + "${id}"); var id = "${id ...

  4. ajax判断成功状态码,Ajax返回状态码200,成功函数不触发(Ajax returns status code 200, success function not triggering)...

    Ajax返回状态码200,成功函数不触发(Ajax returns status code 200, success function not triggering) 关于这一点有很多话题,但没有一个 ...

  5. res.data, res.data.data, res.data.data.rows的含义

    res.data,res.data.data,res.data.data.rows的含义 今天看代码时,看到有这么一个方法,里面有些属性具体的值是什么,我不太理解(实习中,所以有很多不懂的~),写文字 ...

  6. ajax success重复,ajax中success函数中的事件会叠加吗?

    无标题文档 *{margin:0;padding:0} calendar{width:210px;margin:100px auto; overflow:hidden;border:1px solid ...

  7. 认识 Express 的 res.send() 和 res.end()

    前言 在使用 Node.js 的服务端代码中,如果使用的是 Express 框架,那么对于一个请求,常常会有两种响应方式: // 方法1 app.get("/end", (req, ...

  8. nodejs接口中的的res.body,res.params,res.query怎么理解?

    问题: nodejs接口中的的res.body,res.params,res.query怎么理解 描述: nodejs接口中,搞不清什么时候取res.body,什么时候取res.params. 解决: ...

  9. res.setHeader()和res.writeHead()

    res.setHeader()和res.writeHead() 事先声明: 这是我自己得出来的结论,如有不对,还望告知

最新文章

  1. 对光照、阴影和反光具有鲁棒性的变化检测算法及实现
  2. iphone 软键盘
  3. Github标星3.7k:微软出的数据科学入门课程(附下载)
  4. 前端学习(2606):vue简单叙述
  5. python动态与静态语言_静态语言和动态语言的区别
  6. polycube--基于ebpf/xdp的网络套件(网桥,路由器,nat,负载平衡器,防火墙,DDoS缓解器)
  7. git修改文件名大小写的方法。
  8. alwayson高可用组_AlwaysOn可用性组–好奇心使您的工作更轻松–第2部分
  9. Javascript:运行机制与原理
  10. 微信扫一扫服务器地址,微信扫一扫
  11. lumion鸟瞰图---制作心得
  12. 江苏高考时间2021成绩查询,小高考时间2021具体时间江苏-江苏小高考成绩查询公布时间及网站...
  13. C语言abs函数与fabs函数,函数abs 和fabs
  14. iis服务器.webp文件无法访问的解决办法
  15. [附源码]Python计算机毕业设计_旅游系统
  16. ZDM2004工具式绘图软件v1.7 for AutoCAD2004 1CD(水电版)
  17. python:在Windows上使用 Python
  18. 针对局域网IM飞秋(feiq)的开发总结
  19. 电销系统不仅外显手机号,还能自选归属地
  20. 玩转娱乐化时代|淘系互动团队几年的技术沉淀+经验都在这!

热门文章

  1. windows下,查看apk的包名、以及查找appActivity(aapt命令)
  2. Java 创建带有套接字的简单代理服务器示例
  3. 公钥秘钥及加签验签那些事儿
  4. 高等工程数学 —— 第四章 (1)线性方程组的直接解法与广义逆矩阵求解矛盾方程组
  5. wx小程序(wxml)
  6. 电子健康档案在国外的一些实践
  7. 简单聊一聊Python工程师任职要求及未来发展方向
  8. 陈艾盐:《春燕》百集访谈节目第三十九集
  9. 11.2.5 云计算、大数据时代
  10. 图片怎么转换成PDF格式?这两种方法赶紧记下