为了账号安全,请及时绑定邮箱和手机立即绑定

vue新人求助下,为什么用箭头函数无法获取this.isPhoneFooter的值

vue新人求助下,为什么用箭头函数无法获取this.isPhoneFooter的值

森栏 2019-05-10 15:21:53
我的switchPhone函数用箭头函数的方式写无法获取到this.isPhoneFooter的值但是换成switchPhone(){}就可以正确获取到,这是什么原因?代码如下exportdefault{data(){return{isPhoneFooter:true,active:false,items01:[{select:'目标检测'},{select:'图像分类'},{select:'人体识别'},{select:'人脸识别'},{select:'文字处理'},{select:'音频处理'}],items02:[{select:'精彩预览'},{select:'智能集锦'},{select:'物料/海报生成'},{select:'3D原生植入'},{select:'动态浮层植入'}],items03:[{select:'推荐算法'},{select:'以图搜影'},{select:'聚类分析'}]}},methods:{switchPc(){//console.log('切换电脑版');//letw=document.documentElement.clientWidth||document.body.clientWidth;//leth=document.documentElement.clientHeight||document.body.clientHeight;//document.getElementsByTagName('body')[0].style.zoom='0.1';this.isPhoneFooter=false;},switchPhone:()=>{//console.log('切换手机版');document.getElementsByClassName('phone_home_middle')[0].style.width='150px';this.isPhoneFooter=true;}}}
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

原文链接
注意,不应该使用箭头函数来定义method函数(例如plus:()=>this.a++)。理由是箭头函数绑定了父级作用域的上下文,所以this将不会按照期望指向Vue实例,this.a将是undefined。
                            
查看完整回答
反对 回复 2019-05-10
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

其实就是箭头函数绑定了父级作用域的上下文,通俗点指向的就近使用的this指向
window.a=2;
functionsetNum(){
this.a=1
}
setNum()
newVue({
el:'#wrap',
data:{
},
methods:{
switchPhone:()=>{
console.log(this)//这样的话指向的this指向的是window同理别的也一样
}
}
})
                            
查看完整回答
反对 回复 2019-05-10
  • 2 回答
  • 0 关注
  • 577 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信