Vue中的var that=this;是啥意思?为什么要这样写?

简介: Vue中的var that=this;是啥意思?为什么要这样写?

var that=this;?为什么要这样写

在vue的代码中,经常能看到这样一段代码:

var that=this;

这个代码的作用是什么呢?看了些博客后,我们来浅谈一下this与that的区别。

以下面这段代码为例:

var app=new Vue({
    el:"#player",
    data:{
        query:"五月天",
        musicList:[]
    },
    methods:{
        searchMusic() {
            var that=this;
            axios.get("url" + this.query).then(
                function (res) {
                  this.musicList=res.data.result.songs;
                    that.musicList=res.data.result.songs;
                }
            ).catch(function (err) {
                console.log(err);
            })
        }
})

在javascript中,this用以指代当前对象,但是this却不是固定不变的。例如在this.query中,此时的this是指app这个实例本身。而this.musicList中的this指代的实际上是axios的回调函数本身,所以此时你在回调函数中,使用this.musicList必然是找不到相应的属性的,因为axios回调函数本身没有musicList这个属性。


所以,我们要在使用回调函数之前将app实例中的属性存储给一个其他值,也就是用that指向this。此时,that即代表app这个实例,this代表axios的回调函数。所以这个时候我们的that.musicList即可以找到相应的属性。同理,当我们的methods在定义函数中自定义了其他函数或者使用其他函数代替了axios回调函数的位置,同样回出现this.musicList找不到属性。

下面我们以一个实例证明我们的推测:

运行代码,使用F12打开控制台,查看运行结果。

可以看到第一个打印结果对应console.log(this.test);。

第二个打印结果对应于console.log(this.musicList);,

第三个打印结果对应于console.log(that.musicList)。

至此,可以证明我们的结论正确。

a9afea1e48ed4dbcba5afd95f43c3db0.png

总结

初学一门技术时,总有些许的疑惑,别怕,它们是我们学习路上的点点繁星,帮助我们不断成长。

文章简短,希望对大家有帮助!

相关文章
|
6天前
|
缓存 监控 JavaScript
探讨优化Vue应用性能和加载速度的策略
【5月更文挑战第17天】本文探讨了优化Vue应用性能和加载速度的策略:1) 精简代码和组件拆分以减少冗余;2) 使用计算属性和侦听器、懒加载、预加载和预获取优化路由;3) 数据懒加载和防抖节流处理高频事件;4) 图片压缩和选择合适格式,使用CDN加速资源加载;5) 利用浏览器缓存和组件缓存提高效率;6) 使用Vue Devtools和性能分析工具监控及调试。通过这些方法,可提升用户在复杂应用中的体验。
21 0
|
6天前
|
JavaScript 前端开发
vue(1),小白看完都会了
vue(1),小白看完都会了
|
6天前
|
JavaScript 数据库
ant design vue日期组件怎么清空 取消默认当天日期
ant design vue日期组件怎么清空 取消默认当天日期
|
6天前
|
JavaScript C++
vue高亮显示组件--转载
vue高亮显示组件--转载
12 0
|
1天前
|
JavaScript Java 关系型数据库
基于SprinBoot+vue的租房管理系统2
基于SprinBoot+vue的租房管理系统2
9 0
|
2天前
|
自然语言处理 JavaScript 数据可视化
5个值得推荐的Vue后台管理框架
几个优秀好看的 Vue 后台管理框架,每个框架都有自己的特点和优势,开发者可以根据项目需求选择适合的框架。
14 0
|
6天前
|
JavaScript 开发工具 git
Vue 入门系列:.env 环境变量
Vue 入门系列:.env 环境变量
13 1
|
6天前
|
JavaScript 前端开发 定位技术
Vue使用地图以及实现轨迹回放 附完整代码
Vue使用地图以及实现轨迹回放 附完整代码
Vue使用地图以及实现轨迹回放 附完整代码
|
6天前
|
JavaScript
Vue中避免滥用this去读取data中数据
Vue中避免滥用this去读取data中数据
|
6天前
|
JavaScript
vue中使用pinia及持久化
vue中使用pinia及持久化
12 0