首先明确一点,箭头函数的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 版权协议,转载请附上原文出处链接和本声明。