收藏
回答

微信小程序中,什么时候才把this编程that?

微信小程序中,什么时候才把this编程that? 以前一直有个习惯,就是在函数体内都会改变下this,然后今天被老大说了,我只是用let that=this 是为了存一个当前指向的this,但是具体什么时候去存这个this还是比较模糊,希望来个人帮我解答一下,谢谢~

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

13 个回答

  • 睡前原谅一切
    睡前原谅一切
    2019-08-09

    其实只要多看下什么情况下用箭头函数 就能解决你这个问题了。

    2019-08-09
    有用
    回复
  • 小醉月思
    小醉月思
    2019-08-08

    箭头函数解决一切问题

    2019-08-08
    有用
    回复 1
    • King
      King
      2019-08-08
      有一个疑惑,就是我把所有函数都换成了箭头函数,会出现一个问题就是 this.setdata 这里的setdata无效?
      2019-08-08
      回复
  • 鲤子
    鲤子
    2019-08-08

    个人觉得,还是要搞清楚this的指向作用域,不是哪哪都来个let that = this,看着都难受。如果闭包的函数里有用到这个函数体的this,那么page的this就需要给重新绑定一下,否则就会乱了。如果没有,用箭头函数就行了,基本不会有啥作用域出错的情况~!~

    2019-08-08
    有用
    回复
  • King
    King
    2019-08-07


    还有哦,这里的this指向应该也是没有被改变的把?所以我也没有必要去声明那个that了对吧?其次,关于变量名.....我是真的快起疯了- -

    2019-08-07
    有用
    回复 2
    • zzc
      zzc
      2019-08-07

      这里完全没必要定义that,就一个函数t,建议用箭头函数是指向上一级的,这是js基础还是还是多看看吧,谁会开个帖子来问语法基础的问题...

      2019-08-07
      回复
    • King
      King
      2019-08-07
      呃。。。。巩固基础嘛。谢谢您的回答~
      2019-08-07
      回复
  • zzc
    zzc
    2019-08-07

    不一定要用that啊,let abcd = this都可以

    2019-08-07
    有用
    回复 1
    • King
      King
      2019-08-07
      哈哈。你最优秀
      2019-08-07
      回复
  • 圆
    2019-08-07

    console.log(this)一下呗

    在方法内部使用this的时候,通过this能不能拿到外部(你想要的)的属性或方法,拿不到则用let that = this,拿的到就不需要了;

    强烈建议使用箭头函数,箭头函数内部与其外部的this是保持一致的;

    2019-08-07
    有用
    回复 1
    • King
      King
      2019-08-07
      嗯,这个好。下次我就直接用这个方法了,有时候光想确实想不出this的指向问题。话说,我可以直接在全局声明一个that然后以下全部用that不?如果在全局声明的话,是在onloda函数中声明对把?
      2019-08-07
      回复
  • var 友原
    var 友原
    2019-08-07

    楼上说得都对

    2019-08-07
    有用
    回复
  • ؞咬了你؞F࿆ū࿆t࿆ū࿆r࿆ē࿆
    ؞咬了你؞F࿆ū࿆t࿆ū࿆r࿆ē࿆
    2019-08-07
    Page({
        onLoad: function () {
            let that = this
            setTimeout(function () {
                that.setData({...})
            }, 1000)
        }
    })

    例如这种情况。

    反正就是出现闭包,或者别的跨实例的调用,或者此this非彼this的状况。那你就需要通过that = this或者别的什么东西来把原来的this传进去。

    2019-08-07
    有用
    回复 1
    • ؞咬了你؞F࿆ū࿆t࿆ū࿆r࿆ē࿆
      ؞咬了你؞F࿆ū࿆t࿆ū࿆r࿆ē࿆
      2019-08-07
      假设你在Page里调用setTimeout或者wx.request的success的回调里拿this看看,拿到的肯定不是Page里的那个this,所以才需要在外部用that来存下Page的this,然后在回调中使用。
      2019-08-07
      1
      回复
  • 2019-08-07

    比如ajax请求数据的成功回调里、需要that=this ,或者定时器里需要this的时候 外面定义that = this

    2019-08-07
    有用
    回复
  • 
    2019-08-07

    你们老大估计也不是很懂吧

    2019-08-07
    有用
    回复 1
    • King
      King
      2019-08-07
      不应该把,我不敢问他......所以就发帖问问
      2019-08-07
      回复

正在加载...

登录 后发表内容
问题标签