小程序
小游戏
企业微信
微信支付
扫描小程序码分享
微信小程序中,什么时候才把this编程that? 以前一直有个习惯,就是在函数体内都会改变下this,然后今天被老大说了,我只是用let that=this 是为了存一个当前指向的this,但是具体什么时候去存这个this还是比较模糊,希望来个人帮我解答一下,谢谢~
13 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
其实只要多看下什么情况下用箭头函数 就能解决你这个问题了。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
箭头函数解决一切问题
个人觉得,还是要搞清楚this的指向作用域,不是哪哪都来个let that = this,看着都难受。如果闭包的函数里有用到这个函数体的this,那么page的this就需要给重新绑定一下,否则就会乱了。如果没有,用箭头函数就行了,基本不会有啥作用域出错的情况~!~
还有哦,这里的this指向应该也是没有被改变的把?所以我也没有必要去声明那个that了对吧?其次,关于变量名.....我是真的快起疯了- -
这里完全没必要定义that,就一个函数t,建议用箭头函数是指向上一级的,这是js基础还是还是多看看吧,谁会开个帖子来问语法基础的问题...
不一定要用that啊,let abcd = this都可以
console.log(this)一下呗
在方法内部使用this的时候,通过this能不能拿到外部(你想要的)的属性或方法,拿不到则用let that = this,拿的到就不需要了;
强烈建议使用箭头函数,箭头函数内部与其外部的this是保持一致的;
楼上说得都对
Page({
onLoad:
function
() {
let that =
this
setTimeout(
that.setData({...})
}, 1000)
}
})
例如这种情况。
反正就是出现闭包,或者别的跨实例的调用,或者此this非彼this的状况。那你就需要通过that = this或者别的什么东西来把原来的this传进去。
比如ajax请求数据的成功回调里、需要that=this ,或者定时器里需要this的时候 外面定义that = this
你们老大估计也不是很懂吧
正在加载...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
其实只要多看下什么情况下用箭头函数 就能解决你这个问题了。
箭头函数解决一切问题
个人觉得,还是要搞清楚this的指向作用域,不是哪哪都来个let that = this,看着都难受。如果闭包的函数里有用到这个函数体的this,那么page的this就需要给重新绑定一下,否则就会乱了。如果没有,用箭头函数就行了,基本不会有啥作用域出错的情况~!~
还有哦,这里的this指向应该也是没有被改变的把?所以我也没有必要去声明那个that了对吧?其次,关于变量名.....我是真的快起疯了- -
这里完全没必要定义that,就一个函数t,建议用箭头函数是指向上一级的,这是js基础还是还是多看看吧,谁会开个帖子来问语法基础的问题...
不一定要用that啊,let abcd = this都可以
console.log(this)一下呗
在方法内部使用this的时候,通过this能不能拿到外部(你想要的)的属性或方法,拿不到则用let that = this,拿的到就不需要了;
强烈建议使用箭头函数,箭头函数内部与其外部的this是保持一致的;
楼上说得都对
Page({
onLoad:
function
() {
let that =
this
setTimeout(
function
() {
that.setData({...})
}, 1000)
}
})
例如这种情况。
反正就是出现闭包,或者别的跨实例的调用,或者此this非彼this的状况。那你就需要通过that = this或者别的什么东西来把原来的this传进去。
比如ajax请求数据的成功回调里、需要that=this ,或者定时器里需要this的时候 外面定义that = this
你们老大估计也不是很懂吧