vue中的this指向问题


1、※  对于普通函数(包括匿名函数),this指的是直接的调用者,在非严格模式下,如果没有直接调用者,this指的是window。showMessage1()里setTimeout使用了匿名函数,this指向window。

2、※  箭头函数是没有自己的this,在它内部使用的this是由它定义的宿主对象?决定。showMessage2()里定义的箭头函数宿主对象为vue实例,所以它里面使用的this指向vue实例。

注:
【普通函数的 this
      普通函数的 this 是由动态作用域决定,它总指向于它的直接调用者。具体可以分为以下四项:
this 总是指向它的直接调用者, 例如 obj.func() ,那么func()里的 this 指的是obj。
在默认情况(非严格模式,未使用  'use strict' ),如果函数没有直接调用者, this为window
在严格模式下,如果函数没有直接调者, this 为undefined
使用call,apply,bind绑定的, this 指的是绑定的对象
 
1)全局函数中的this指向window
2)对象中的方法(函数)中的this,指向对象,理解:obj.m=function(){},m和fn等价,因此调用m也相当于调用fn,原理同3)
3)构造函数中的this指向调用该构造函数的实例对象
4)特殊this指向:
箭头函数没有绑定this,this继承自外围作用域,理解:查看上一层级的函数的this的指向,继承它!!
5)绑定this指向:

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM