微信小程序中,什么时候才把this编程that?
微信小程序中,什么时候才把this编程that?以前一直有个习惯,就是在函数体内都会改变下this,然后今天被老大说了,我只是用let that=this 是为了存一个当前指向的this,但是具体什么时候去存这个this还是比较模糊,希望来个人帮我解答一下,谢谢~
10 回复
Page({ onLoad: function () { let that = this setTimeout( function () { that.setData({...}) }, 1000) } }) |
例如这种情况。
反正就是出现闭包,或者别的跨实例的调用,或者此this非彼this的状况。那你就需要通过that = this或者别的什么东西来把原来的this传进去。
个人觉得,还是要搞清楚this的指向作用域,不是哪哪都来个let that = this,看着都难受。如果闭包的函数里有用到这个函数体的this,那么page的this就需要给重新绑定一下,否则就会乱了。如果没有,用箭头函数就行了,基本不会有啥作用域出错的情况~!~