为什么一定要 var that = this; this.setData({?
发布于 5 年前 作者 uyin 13986 次浏览 来自 问答

  chooseimage: function () {
    var that = this;    
    wx.chooseImage({
      count: 1, // 默认9  
      sizeType: [‘original’, ‘compressed’], // 可以指定是原图还是压缩图,默认二者都有  
      sourceType: [‘album’, ‘camera’], // 可以指定来源是相册还是相机,默认二者都有  
      success: function (res) {
        this.setData({

错误为:

this.setData is not a function;at pages/main/index chooseimage function;at api chooseImage success callback function
TypeError: this.setData is not a function

为什么一定要

that.setData({ …才行?不好意思,我是搞C++的,这js和微信还是第一次用。请大家解答下,谢谢,

4 回复

哦,理解了,谢谢大家,
原来同一个函数内部,使用的情景不同其 this 作用域也不同,谢谢哈,

作用域的问题,this对应的对象变了。不过用var that = this;我一直觉得很别扭。我都用var t = this;

js里的this是比较特殊的

 success: function (res) {

在这个function里面,this的上下文已经变了,不再指向当前Page本身,至于它这个时候指向的是什么,还没有深入研究过,不清楚;

而在wx.xxx请求之外定义的var that = this , that 里面存的就是当前Page本身,不会变的,所以用that没有问题

作用域,this指向变了

回到顶部