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

vue中this指向的问题

vue中this指向的问题

慕妹3146593 2019-03-04 16:23:33
在下面的代码中,写了一个简单的例子,如果我们去执行vue的group方法,在forEarch里面,对变量进行push(),发现使用 app. 是可以的,使用 this. 就会报错,而group1方法用es6去定义函数,app. 和 this. 都可以执行,请问这是什么原因? this在vue的函数里面不是一直指向vue实例吗。es6定义的函数没有出现这样的问题。
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

如果你用for循环,而不用forEach的话,这时候使用this就是可以的,造成这个原因就是forEach循环体是以一个函数体的形式去循环的,this总是指向事件的调用者,这点你应该有所了解,知道了这一点,大概就知道是怎么回事了。

查看完整回答
反对 回复 2019-03-06
?
GCT1015

TA贡献1827条经验 获得超4个赞

接纳的答案回答不完全正确。

对于使用function定义的函数,它里面使用的this是由它的直接调用者决定(执行时)。如果没有直接的调用者,在非严格模式下,this指向window。

group()里的forEach函数使用的是匿名函数作为回调函数,它是没有直接的调用者的,所有this为window。

箭头函数是没有自己的this,在它里面使用的this指向的是定义箭头函数时(注意:并非执行时)所处的宿主对象。

group1()里定义的箭头函数宿主对象为vue实例,所以它里面使用的this为vue实例。

具体可以参考下:Vue实例里this的使用


查看完整回答
反对 回复 2019-03-06
  • 2 回答
  • 0 关注
  • 1597 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号