前言

在很久很久之前我还是个菜鸡的时候,解决报错的时候,不幸看过一种关于this指向的写法,当时没记住,只知道有个这么个模糊的概念,然后今天晚上来了灵感,就写出来了,说到这个this指向问题,很多刚入行的前端同学应该多会碰到,那么今天就写一下关于全局this指向的代码,让我们的代码更加简洁。

传统写法

问题代码

<template><div><div @click="test">按钮</div></div>
</template>
<script>export default {name: "test",data(){return{testArr:[1,2,3,4,5],testData:"data"}},methods:{test(){this.testArr.forEach(function(value) {console.log("===>",this.testData);});}}}
</script>

报错

既然说找不到testData,我们明明在data里挂载了testData数据,但是这里获取不到,这是因为这里经过forEach循环后this的指向变了,那么通常的解决方案就是声明一个let _this=this;的写法
解决

<script>test(){let _this=this;this.testArr.forEach(function(value) {console.log("===>",_this.testData);});}
</script>

当然咯这种并没有问题,但是我们如果有很多方法都存在this指向问题的时候,那么我们的代码就会下面这样

<script>test1(){let _this=this;this.testArr.forEach(function(value) {console.log("===>",_this.testData);});},test2(){let _this=this;this.testArr.forEach(function(value) {console.log("===>",_this.testData);});},test3(){let _this=this;this.testArr.forEach(function(value) {console.log("===>",_this.testData);});},test4(){let _this=this;this.testArr.forEach(function(value) {console.log("===>",_this.testData);});}</script>

假设test1、test2、test3、test4,都是业务代码,那么这里每次方法中都要声明let _this=this;就很烦!!!

VUE全局this指向

<template><div><div @click="test">按钮</div></div>
</template>
<script>let _this=null;export default {name: "test",data(){return{testArr:[1,2,3,4,5],testData:"data"}},created(){_this=this},methods:{test(){this.testArr.forEach(function(value) {console.log("===>",_this.testData);});}}}
</script>

即使我们有再多存在this指向问题的代码也不需要每个方法中写let _this=this;代码了,直接通过外部创建的_this搞定

VUE全局this指向相关推荐

  1. VUE全局导航守卫、 请求、响应拦截器 的设置

    文件设置参考地址:https://gitee.com/wang_yu5201314/headlines__news/tree/master/%E9%A1%B9%E7%9B%AE%E6%BA%90%E7 ...

  2. vue 全局函数的 定义与任意调用 (代码篇)

    文章目录 vue 全局函数的 定义与任意调用 方法一: 首先: 之后: 最后: 打印结果 · 截图: 方法二:[推荐] 代码:注意事项: vue 全局函数的 定义与任意调用 方法一: 首先: 随意新建 ...

  3. VUE 全局监听sessionStorage变化

    VUE 全局监听sessionStorage变化 另参考: (转)vue中监听sessionStorage的变化

  4. Vue:全局拦截所有请求,并在请求头中添加token

    Vue:全局拦截所有请求,并在请求头中添加token 在实际的项目中,为了登录的安全,token是必不可少的,所以就需要前后端配合,后端生成和验证token(这方面我也写过博客,讲述后端对token的 ...

  5. vue全局修改设置滚动条样式

    ::-webkit-scrollbar{ /*滚动条整体样式*/width: 10px; /*高宽分别对应横竖滚动条的尺寸*/height: 1px; } ::-webkit-scrollbar-th ...

  6. vue 全局动态修改title、keywords、description;vue常用挂载的方法,自定义指令;

    vue 全局动态修改title.keywords.description 路由: {path: "xxx",name: "xxx",component: () ...

  7. Vue全局注册公共组价

    Vue全局注册公共组价

  8. Vue全局路由侦听beforeEach路由守卫附代码使用示例

    使用路由守卫beforeEach,可以实现路由侦听: 全局侦听路由跳转的实现代码: app.vue onLaunch: function(e) {this.$router.beforeEach((to ...

  9. vue 全局排序_搞定VUE [ 一 ]

    击上方  蓝字  关注我 首先.以我个人的观点,不赞成把这些东西死记下来,会使用,能上手做,有不明白的及时的去浏览.翻阅,在实战中去快速的理解和掌握,之后水到渠成式的一步步去走向深入.当然,从自身的职 ...

  10. vue 公用页面引用_关于vue全局引用公共的js和公共的组件的折腾

    前沿 最近在项目开发中遇到一些需要全局引用的公共js,或者公共组件,早就烦死了那种每个页面都写一遍,都引用一个js的写法,正好vue解决了这个额问题,于是乎就开始折腾,折腾的过程中也发现了一些自己之前 ...

最新文章

  1. mysql5.5+版本与mysql5.5之前版本部署主从的一些差异
  2. 为什么我的cpld需要重新上电才能工作_正压型防爆配电箱的调试工作
  3. RK3288 手动设置电池电量
  4. 2014百度之星资格赛 1001:Energy Conversion(水题,逻辑题)
  5. 网页加载的不同的方式、点击按钮显示一句话、jQuery中获取元素的方法
  6. AWR Report and session_cached_cursor
  7. python自动化办公教程-Python自动化办公之操作Excel文件
  8. html session修改,html session
  9. YbSoftwareFactory 代码生成插件【二十三】:集成强大的公文流转系统
  10. Word页面视图下不显示内容但web视图下可以显示的问题
  11. python公众号接口_用Python实现微信公众号API素材库图文消息抓取
  12. 「随笔」我的导师离职了...
  13. echarts X轴和Y轴不对应(xAxis type time)的用法
  14. python学习2——if语句、elif、if嵌套、while循环、while嵌套
  15. python2.7.18绿色安装包制作
  16. matlab 生成Blocks和Heavysine等典型非线性非平稳信号代码
  17. 网站SEO:百度快排是如何实现的
  18. STL系列之四 heap 堆
  19. 光场技术的过去,现在和未来
  20. 用C语言输出各种三角形

热门文章

  1. 杭州地区,街道sql,用于项目的地址查询
  2. 关于模板函数声明与定义的问题
  3. Oracle中存储过程中变量的声明与赋值
  4. 李占通他道出了我的心声
  5. Hyper-v安装CentOS
  6. C语言一维数组、二维数组传参
  7. 软件工程笔记四__实体联系图(ER图)
  8. 电脑ndows无法启动,电脑无法启动windows帮助和支持为什么?
  9. 2019年一线城市程序员工资大调查
  10. 在线作图|2分钟做Lefse分析