收藏
回答

wx.getStorage中this的作用域?

今天用wx.getStorage时遇到了this作用域的问题,直接打印this,结果是undefined,必须得用var self = this

但是奇怪的是wx.setStorage直接用this是没问题的,

wx.request直接用this时也没有出现这种问题,

实在是搞不明白,下面是相关代码截图,求指点

  • 全局data


  • wx.getStorage


如果在wx.getStorage里直接打印this,结果是undefined,如下图第二行



  • wx.setStorage是写在methods里的,这里直接用this并没有问题


  • wx.request,无论是在url里,还是在success里用this都没有问题


最后一次编辑于  08-16  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

4 个回答

  • 卢霄霄
    卢霄霄
    08-16

    wx.getStorage({

        success: res=>{

            console.log(this)

        }

    })

    08-16
    赞同
    回复 1
    • Hong
      Hong
      08-18
      哦哦 我明白了,thank you~~~
      08-18
      回复
  • がんばります
    がんばります
    08-16
    ()=>{}是ES6语法,不绑定上下文,this指向上层作用域 (){}是ES5语法,此时this指向当前函数作用域
    08-16
    赞同
    回复 1
    • Hong
      Hong
      08-18
      明白了明白了 thank you~~~
      08-18
      回复
  • 铭锋科技
    铭锋科技
    08-16

    一会是data={},一会是onLoad,一会又是methods={},这是同一个页面吗?或者是用了第三方框架?

    08-16
    赞同
    回复 1
    • Hong
      Hong
      08-18
      同一个页面,用了wepy
      08-18
      回复
  • o0o往后余生
    o0o往后余生
    08-16

    要么用闭包,要么在外面定义 var t = this

    wx.getStorage({
          key:"dsfas",
          success:(function(t) {
            return function(){
     
              console.log('sfas', t)
               
            }
          })(this)
        })


    08-16
    赞同
    回复 1
    • Hong
      Hong
      08-18
      thank you~~
      08-18
      回复
问题标签