ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Vue中关于this指向的问题

2022-07-20 02:31:24  阅读:151  来源: 互联网

标签:定时器 函数 指向 对象 箭头 Vue 关于


由Vue管理的函数

例如:

  • computed 计算属性
  • watch 监视属性
  • filters (Vue3中已弃用且不再支持) 过滤器
  • ....

上述属性里配置的函数不要采用箭头函数写法,因为箭头函数没有自己的this对象,使用this时会向外找到window,不会指向Vue实例,也就调用不到Vue中的数据。

不被vue管理的函数

例如:

  • setTimeout计时器里的回调函数
  • setInterval定时器里的回调函数
  • ajax请求里的回调函数
  • ....

上述回调函数(除定时器外)使用普通函数定义的话,里面的this指向的是window,定时器中this指向undifined(这个死磕了老长时间,vscode没提示,换webstorm调试出来的...)

用箭头函数时,this会向函数外找,找到Vue实例(因为在vue环境里嘛)。

this指向大致分类

奉上 菜鸟教程(yyds) 里大佬总结的

  • 在对象方法中, this 指向调用它所在方法的对象。
  • 单独使用 this,它指向全局(Global)对象。
  • 函数使用中,this 指向函数的所属者。
  • 严格模式下函数是没有绑定到 this 上,这时候 this 是 undefined。
  • 在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素。
  • apply 和 call 允许切换函数执行的上下文环境(context),即 this 绑定的对象,可以将 this 引用到任何对象。

附上 菜鸟中介绍this的直达链接:this详解

总结

在Vue环境里:

  • 由Vue管理的函数,尽量使用普通函数定义。
  • 不被Vue管理的函数,尽量使用箭头函数定义。
  • 监视属性里的普通函数,函数体里要使用定时器的话,要用箭头函数来定义定时器。(举个栗子)

这样保证this总是指向Vue实例,可以调用到Vue数据。


有很多前辈写的太高奥了,,越看越迷都迷了,,这里写个总结当备忘,足够用了,以后有时间了学透了再补充

标签:定时器,函数,指向,对象,箭头,Vue,关于
来源: https://www.cnblogs.com/mojospy/p/16496422.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有