欢迎访问宙启技术站
智能推送

微信小程序开发中var that=this的用法是怎样的

发布时间:2023-05-15 07:12:24

小程序开发中,var that=this的用法是非常常见的。这是因为在小程序中许多函数是异步执行的,导致在某些情况下this指向会发生变化。此时可以使用var that=this将当前this的指向赋值给一个新的变量,以便在后面的代码中使用。

首先,我们需要明确this指向在小程序开发中的问题。this指向在小程序开发中会因为作用域的问题发生变化。如果在一个函数中使用this,它指向的是该函数的作用域。但是在异步执行的回调函数中,this指向会发生变化。举个例子:

Page({
  data: {
    name: '小明'
  },
  onLoad: function () {
    wx.request({
      url: 'https://www.example.com',
      success: function (res) {
        console.log(this.data.name); // undefined,此时this指向wx.request函数的作用域
      }
    })
  }
})

我们可以看到,在异步执行的回调函数中,this指向已经发生改变了,导致访问this.data.name时出现了问题。此时,我们可以使用var that=this将当前this的指向赋值给一个新的变量that,再使用that.data.name来访问name属性。

Page({
  data: {
    name: '小明'
  },
  onLoad: function () {
    var that = this;
    wx.request({
      url: 'https://www.example.com',
      success: function (res) {
        console.log(that.data.name); // '小明',此时使用变量that来访问name属性,避免了this指向的问题
      }
    })
  }
})

通过这种方式,我们可以确保在异步执行的回调函数中this指向的问题不会影响我们的代码逻辑。同时,我们需要注意的是,在每个函数中都要使用var that=this来定义新的变量that,否则this指向的问题还是会出现。

总结一下,var that=this是小程序开发中常用的技巧,可以解决异步执行时this指向的问题。在使用时我们需要注意以下几点:

1.在每个异步回调函数中都要使用var that=this,否则this指向的问题还是会出现。

2.定义完that变量后,我们可以使用that来访问对应的属性或方法。

3.注意this指向的问题只会在异步执行的回调函数中出现,普通的函数和方法执行时this指向应该没有问题。