今天完全是讨论记录贴
对于vue的this指向问题,一直都是学了忘,忘了学
今天敲代码的过程中遇到一个问题:
forEach函数里面获取不到data里面定义的变量
item.data[0].hisData.forEach(function(item2){
this.hisDataList.push([
item2.time,
item2.data,
])
})
//报错,显示没有定义hisDataList
let hisDataList=[]
item.data[0].hisData.forEach(function(item2){
hisDataList.push([
item2.time,
item2.data,
])
})
this.hisDataList=hisDataList
//利用中间变量转换一下,解决了
此时虽然可以根据报错解决问题,但是对于本质一知半解
查了些资料,这个的知识点应该是对象函数的this指向是指向于这个对象所以在函数的内部并没有声明hisDataList,this.hisDataList就会报错。
ps:如果对象函数是箭头函数得话,那this会指向父级作用域。所以还可以有一种写法可以解决这个问题,比中间变量好。
res.body.forEach((ele)=>{
if (ele.name.includes('土壤')) {
this.eqList.push(ele)
}
})
//换成箭头函数在对象函数内部可以正常使用data里面声明的变量