猿问

vue中this指向的问题

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

慕妹3146593
浏览 1599回答 2
2回答

慕桂英3389331

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

GCT1015

接纳的答案回答不完全正确。对于使用function定义的函数,它里面使用的this是由它的直接调用者决定(执行时)。如果没有直接的调用者,在非严格模式下,this指向window。group()里的forEach函数使用的是匿名函数作为回调函数,它是没有直接的调用者的,所有this为window。箭头函数是没有自己的this,在它里面使用的this指向的是定义箭头函数时(注意:并非执行时)所处的宿主对象。group1()里定义的箭头函数宿主对象为vue实例,所以它里面使用的this为vue实例。具体可以参考下:Vue实例里this的使用
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答