微信小程序错误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 相关文章推荐
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
Apr 02 Javascript
jQuery下的动画处理总结
Oct 10 Javascript
简单时间提示DEMO从0开始一直进行计时
Nov 19 Javascript
gridview生成时如何去掉style属性中的border-collapse
Sep 30 Javascript
谈一谈js中的执行环境及作用域
Mar 30 Javascript
快速掌握jQuery插件开发
Jan 19 Javascript
jQuery布局组件EasyUI Layout使用方法详解
Feb 28 Javascript
移动端使用localResizeIMG4压缩图片
Apr 22 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
Mar 21 Javascript
vue.js实现插入数值与表达式的方法分析
Jul 06 Javascript
详解React native fetch遇到的坑
Aug 30 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
Jul 22 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
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
非常好的js代码
2006/06/27 Javascript
图片上传即时显示缩略图的js代码
2009/05/27 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
js实现点击烟花特效
2020/10/14 Javascript
Python聚类算法之基本K均值实例详解
2015/11/20 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
对Django中内置的User模型实例详解
2019/08/16 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
Python正则表达式学习小例子
2020/03/03 Python
python的链表基础知识点
2020/09/13 Python
详解Django中异步任务之django-celery
2020/11/05 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
LookFantastic丹麦:英国美容护肤精品在线商城
2016/08/18 全球购物
英国女装网上商店:I Saw It First
2018/10/18 全球购物
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
2014年幼儿园小班工作总结
2014/12/04 职场文书
大学生团员个人总结
2015/02/14 职场文书
文明礼貌主题班会
2015/08/14 职场文书
2021-4-3课程——SQL Server查询【2】
2021/04/05 SQL Server
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers