Vue.prototype 全局变量
有两种都是在main.js声明
第一种
main.js 声明
1 2 3 4 5 6 7 8 9 10 | Vue.config.productionTip = false // mount axios Vue.$http and this.$http Vue.use(VueAxios) Vue.prototype.$a = 1 new Vue({ router, ... |
在组件中使用a
1 | console.log( this .$a) |
这样定义有一个问题,很容易和组件定义的值冲突,所有一般我习惯在值前面加$
这个值不是全局变量,而是原型,不支持修改
Vue.prototype
不是全局变量,而是原型属性,去看看prototype
和原型链的知识就明白了。
参考《JavaScript高级程序设计》第6章 面向对象的程序设计
因为每一次跳转到新的Vue页面,都是一个独立的Vue实例,实例中this.$a
从Vue.prototype.$a
而来,所以仍然是1
第二种
有一种是在new Vue的时候声明,支持修改
1 2 3 4 5 6 7 8 9 10 11 | new Vue({ ... data() { return { ..., a: 1 ... }; }, ... }); |
其他所有组件中通过$root.a
可访问和修改此变量。
第三种
把全局变量挂在Window下面,在main.js中:
1 | window.a = 1; |
组件A
1 2 | console.log(a) //1 a = 2; |
组件B
1 | console.log(a) //2 |
这种不到万不得已的情况尽量不要用,会对全局造成污染,出现问题也不好定位
参考:https://segmentfault.com/q/1010000009992656
https://blog.csdn.net/pma934/article/details/86765722
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!