相同的地方为什么this指定的不一样呢

onLoad: function (options) {
      var that = this
        wx.request({
            url: 'http://127.0.0.1:8889/api/club/userlist',
            data:{
                clubnumber:app.globalData.myclub
            },
            method:'post',
            header:{
                'content-type':'application/json'
            },
            success:function(res){
                that.setData({
                    userinfo:res.data
                })
            }
        })
  }


onLoad: function (options) {
        wx.request({
            url: 'http://127.0.0.1:8889/api/club/finded',
            data:{
                name:app.globalData.findClub,
                number:app.globalData.findNumber
            },
            header:{
                'content-type':'application/json'
            },
            method:'post',
            success:(res)=>{
                const {name,clubclass,admin,member} = res.data
                this.setData({
                    name:name,
                    clubclass:clubclass,
                    admin:admin,
                    member:member
                })
            }
        })
  }

以上俩都是在监听页面加载的时候的函数,但是一个不用重定向this,一个需要定向this,不然就会报错,为什么会出现这种情况呢

第一段函数是一个子页面 是要tabbar点进去的页面 难道是因为这个原因吗 求大佬解答啊~

阅读 2.6k
5 个回答

你第一段用了普通函数作为回调函数,此时的this指向发生了改变,指向的是发生事件的那个对象,也就是是指向success,第二段用了箭头函数,箭头函数里面是没有this的(我是这样理解的),所以箭头函数里面的this指向的是定义箭头函数的那个对象的,也就是全局的this,this指向没有发生改变,还是当前页面。跟tabbar没关系

掘金上很火的一篇文章关于this指向的。
这里有一些关于this具体的一些指向问题

没看到第二个是箭头函数吗 0.0

因为调用的地方不一样吧

箭头函数继承的是上下文的作用域,而非箭头函数继承的执行该函数的作用域

你第一个是非箭头函数所以没改变this的作用域,第二个用到了箭头函数改变了this的作用域。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题