小程序的this指向问题

小程序的this指向问题,第1张

小程序的this指向的是window,一般要在方法里重新定义的

原因 :回调函数success中的this显示undefined,需要将外层this传进来。至于为啥会报undefined,有人给出解释是this指向回调函数本身。

另外一种方法:使用 箭头函数

控制台显示这两个指向相同

原因: 箭头函数中this指向外层作用域,

解决办法 为复制一份this的指向到变量中,这样在函数执行过程中虽然this改变了,但是that还是指向之前的对象

大家知道this是指当前对象,只是一个指针,真正的对象存放在堆内存中,this的指向在程序执行过程中会变化,因此如果需要在函数中使用全局数据需要合适地将this复制到变量中。

this作用域分析:

1.在Page({})里面,this关键字指代Page({})整个对象

2.因此可以通过this关键字访问或者重新设置Page({})里data的变量

3.然而在loadData函数中使用了wx.request({})API这个方法导致在wx.request({})里没办法使用this来获取Page({})对象

4.虽然在wx.request({})里没法使用this获取Page({})对象,但是可以在wx.request({})外面先把this存在某个变量中,所以就有了 var that =this 这个声明。此时that指代Page({})整个对象,这样子就可以在wx.request({})里使用that访问或者重新设置Page({})里data的变量

在小程序中使用this.setData()方法是非常常见的,通过这个方法,可以将data中的变量进行赋值.那么如果遇到下面这种情况:

如果此时我想修改 belineData 对象下的 name 的值,我们可以这样 *** 作

这样就可以把字符串赋值给对象下的 name 属性

这个时候,我们需要给 belineData 数组下的第一个对象赋值的话.大概脑子里想的应该是:

然后,我们会发现,这样写并不行.而要通过ES6的标识符来实现

使用变量的部分要 ${} 套用起来就可以了.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11041577.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存