收藏
回答

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都没有问题


回答关注问题邀请回答
收藏

4 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-08-16

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

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


    2019-08-16
    有用
    回复 1
    • 2019-08-18
      thank you~~
      2019-08-18
      回复
  • 铭锋科技
    铭锋科技
    2019-08-16

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

    2019-08-16
    有用
    回复 1
    • 2019-08-18
      同一个页面,用了wepy
      2019-08-18
      回复
  • feline
    feline
    2019-08-16
    ()=>{}是ES6语法,不绑定上下文,this指向上层作用域 (){}是ES5语法,此时this指向当前函数作用域
    2019-08-16
    有用
    回复 1
    • 2019-08-18
      明白了明白了 thank you~~~
      2019-08-18
      回复
  • 卢霄霄
    卢霄霄
    2019-08-16

    wx.getStorage({

        success: res=>{

            console.log(this)

        }

    })

    2019-08-16
    有用
    回复 1
    • 2019-08-18
      哦哦 我明白了,thank you~~~
      2019-08-18
      回复
登录 后发表内容
问题标签