关于vue的methods里面的方法不能写成箭头函数这个问题有很多人都有解答过 ,原因是如果写成箭头函数this的值就会是undefined,但是有没有人想为什么写成箭头函数,this的指向就变成了undefined呢?
可能有人说vue是在严格模式的,所以this的指向是指向undefined的。然而事实证明箭头函数的this在严格模式和非严格模式下都是指向window的
以下是我个人根据源码的理解:
在源码里面,有一个名字叫做initMethods的方法,这里面对methods的this做了处理,代码如下:
红框里面是对methods的方法里面的this绑定到vm实例身上,如果这个方法是一个箭头函数,那么通过bind对它进行this绑定的话是无效的,所以此时的this还是指向window的,但是大家都知道箭头函数的this的指向是指向外层普通函数的this的,外层的initMethods是一个普通的函数,在严格模式下this指向的就是undefined,所以最终methods里面的箭头函数的this指向undefined。
以上是个人的理解,欢迎大家指正问题,多提宝贵意见!