收藏
回答

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

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

最后一次编辑于  08-07  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

13 个回答

  • 仙森ღ₅₂₀¹³¹⁴
    仙森ღ₅₂₀¹³¹⁴
    08-09

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

    08-09
    赞同
    回复
  • 醉月思
    醉月思
    08-08

    箭头函数解决一切问题

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

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

    08-08
    赞同
    回复
  • 戒丶
    戒丶
    08-07


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

    08-07
    赞同
    回复 2
    • zzc
      zzc
      08-07

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

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

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

    08-07
    赞同
    回复 1
    • 戒丶
      戒丶
      08-07
      哈哈。你最优秀
      08-07
      回复
  • 圆
    08-07

    console.log(this)一下呗

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

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

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

    楼上说得都对

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

    例如这种情况。

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

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

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

    08-07
    赞同
    回复
  • 
    08-07

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

    08-07
    赞同
    回复 1
    • 戒丶
      戒丶
      08-07
      不应该把,我不敢问他......所以就发帖问问
      08-07
      回复

正在加载...

问题标签