微信小程序错误this.setData报错及解决过程


Posted in Javascript onSeptember 18, 2019

先说原因:

function声明的函数和箭头函数的作用域不同,这是一个不小心坑的地方。可参考箭头函数说明:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

所以对于这个结果,还是换回es5的function函数去写最好了。

箭头函数和function的区别:

  • 箭头函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象
  • 箭头函数不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误
  • 箭头函数不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替,不可以使用yield命令,因此箭头函数不能用作Generator函数。

这么写会报错

thirdScriptError
this.setData is not a function;at pages/index/index onLoad function;at api getSystemInfo success callback function
TypeError: this.setData is not a function
onLoad: function () {
  wx.getSystemInfo({
   success: function (res) {
    this.setData({
     lang: res.language
    })
    console.log(res.language)
   }
  })

这么改一下就不报错了。

onLoad: function() {
  wx.getSystemInfo({
    success: (res) = >{
      this.setData({箭头函数的this始终指向函数定义时的this lang: res.language
      }) console.log(res.language)
    }
  })

或者这样:

onLoad: function () {
  var that=this;
  wx.getSystemInfo({
   success: function (res) {
    that.setData({
     lang: res.language
    })
    console.log(res.language)
   }
  })

可以用如下示例说明:

'use strict';
var obj = {
 i: 10,
 b: () => console.log(this.i, this),
 c: function() {
  console.log(this.i, this);
 }
}
obj.b(); // prints undefined, Window {...} (or the global object)
obj.c(); // prints 10, Object {...}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 检测键盘按键信息及键码值对应介绍
Jan 03 Javascript
js onclick事件传参讲解
Nov 06 Javascript
javascript页面加载完执行事件代码
Feb 11 Javascript
jquery中change()用法实例分析
Feb 06 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
Apr 15 Javascript
整理AngularJS中的一些常用指令
Jun 16 Javascript
jQuery控制控件文本的长度的操作方法
Dec 05 Javascript
TypeScript入门-接口
Mar 30 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
Sep 27 Javascript
vsCode安装使用教程和插件安装方法
Aug 24 Javascript
js canvas实现5张图片合成一张图片
Jul 15 Javascript
js实现ajax的用户简单登入功能
Jun 18 Javascript
解决layui富文本编辑器图片上传无法回显的问题
Sep 18 #Javascript
layui 富文本赋值,取值,取纯文本值的实例
Sep 18 #Javascript
layui 富文本编辑器和textarea值的相互传递方法
Sep 18 #Javascript
微信小程序获取地理位置及经纬度授权代码实例
Sep 18 #Javascript
layui复选框限制选择个数的方法
Sep 18 #Javascript
layui lay-verify form表单自定义验证规则详解
Sep 18 #Javascript
layui输入框只允许输入中文且判断长度的例子
Sep 18 #Javascript
You might like
php顺序查找和二分查找示例
2014/03/27 PHP
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
在vue中获取dom元素内容的方法
2017/07/10 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
Django Highcharts制作图表
2016/08/27 Python
Python科学计算之NumPy入门教程
2017/01/15 Python
详解Python3的TFTP文件传输
2018/06/26 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
python global关键字的用法详解
2019/09/05 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
python manage.py runserver流程解析
2019/11/08 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
Python可以用来做什么
2020/11/23 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
ajax是什么及其工作原理
2012/02/08 面试题
小学毕业寄语大全
2014/04/03 职场文书
核心价值观演讲稿
2014/05/13 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
团委工作总结2015
2015/04/02 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书