有两种都是在main.js声明

第一种

main.js 声明

Vue.config.productionTip = false

// mount axios Vue.$http and this.$http
Vue.use(VueAxios) Vue.prototype.$a = 1 new Vue({
router,
...

在组件中使用a

console.log(this.$a)

这样定义有一个问题,很容易和组件定义的值冲突,所有一般我习惯在值前面加$

这个值不是全局变量,而是原型,不支持修改

Vue.prototype不是全局变量,而是原型属性,去看看prototype和原型链的知识就明白了。

参考《JavaScript高级程序设计》第6章 面向对象的程序设计

因为每一次跳转到新的Vue页面,都是一个独立的Vue实例,实例中this.$aVue.prototype.$a而来,所以仍然是1

第二种

有一种是在new Vue的时候声明,支持修改

new Vue({
...
data() {
return {
...,
a: 1
...
};
},
...
});

其他所有组件中通过$root.a可访问和修改此变量。

第三种

把全局变量挂在Window下面,在main.js中:

window.a = 1;

组件A

console.log(a)//1
a = 2;

组件B

console.log(a)//2

这种不到万不得已的情况尽量不要用,会对全局造成污染,出现问题也不好定位

参考:https://segmentfault.com/q/1010000009992656

https://blog.csdn.net/pma934/article/details/86765722

最新文章

  1. ionic开发中的各种坑
  2. SAP中获取当前用户相关信息的两个函数
  3. 001.linux下clock()检测程序运行时间
  4. [Java] 匿名内部类
  5. lintcode :Longest Palindromic Substring 最长回文子串
  6. iOS开发常用国外网站清单
  7. linux之SQL语句简明教程---SELECT
  8. [SQL基础教程]1-4 SQL 表的创建
  9. Dos命令打印文件以及Dos打印到USB打印端口
  10. Android OpenGL ES 开发(二): OpenGL ES 环境搭建
  11. linux下连接windows的远程桌面
  12. javascript闭包以及闭包的作用
  13. Linux 下安装idea,提示svn版本太低问题
  14. [转]在ASP.NET Core中使用百度在线编辑器UEditor
  15. java二分法搜索
  16. How to recovery compiz
  17. 026、一张图搞懂docker(2019-01-21 周一)
  18. [算法]PHP随机合并数组并保持原排序
  19. MySQL服务器监控注意事项
  20. topcoder srm 520 div1

热门文章

  1. 【BZOJ3508】开灯
  2. CF1120D Power Tree(构造题,差分,最小生成树)
  3. Eclipse对spring-boot,spring-boot-mybatis的搭建
  4. 【Gamma阶段】第八次Scrum Meeting
  5. 【2019年06月28日】A股最便宜的股票
  6. 小米win10+kali 双系统
  7. cad问题小百科 持续更新
  8. 深入理解JVM-对象已死吗
  9. SpringApplication常见用法说明
  10. Effective.Java第23-33条(泛型相关)