深究为啥Vue管理的函数不能是箭头函数

  • Post author:
  • Post category:vue

首先明确一点,箭头函数的this指向是根据上下文作用域确定的

Vue框架中,容易搞错的一点就是认为对象也有作用域

了解作用域与作用域链这个问题就迎刃而解了

假设Vue管理的函数是箭头函数时:

此时this是windows,Vue中data与methods不同,methods是一个对象,data是一个函数,data有自己的作用域,所以当this是windows的时候访问不到data里面的属性。

但是当Vue管理的函数时普通函数的时候:

此时的this指向它的直接调用者(js的this是执行上下文) ——— 谁调用this指向谁

若没找到直接调用者,则this指的是 windows或者 undefined

补充下把作用域和作用域链的内容趴:

作用域:一段程序代码中所用到的名字不总是有效和可用的,而限定变量名的可用性的代码范围就是变量名的作用域。

全局作用域:

  • 直接编写在 script 标签之中的JS代码

  • 一个单独的 JS 文件

        全局作用域在页面打开时创建,页面关闭时销毁;全局作用域中方法和属性都作为windows上的属性和方法去使用。

局部作用域:(函数作用域)

        调用函数时创建函数作用域,函数执行完毕之后,函数作用域销毁;每调用一次函数就会创建一个新的函数作用域,它们之间是相互独立的。

        


版权声明:本文为m0_64567550原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。