wx.getStorage中this的作用域?
发布于 5 年前 作者 nchang 4371 次浏览 来自 官方Issues

今天用__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 回复

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

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

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

()=>{}是ES6语法,不绑定上下文,this指向上层作用域 (){}是ES5语法,此时this指向当前函数作用域

wx.getStorage({

    success: res=>{

        console.log(this)

    }

})

回到顶部