Vue.prototype的问题

萌新求助各位大佬们;
我用Vue在main.js中创建

Vue.prototype.a = 1;  这个全局的变量后;

在组件a中使用

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

然后从a跳到b后;

console.log(this.a);

还是1,不是2,为什么? 怎么修改这种全局的变量啊?还是说用其他的方法设置和修改全局的变量或对象?

阅读 33.3k
4 个回答

这个不是全局变量,而是原型。

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

如果需要设置全局变量,在main.js中,Vue实例化的代码里添加

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

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

所以说基础知识很重要……

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

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

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

window.a = 1;

组件A

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

组件B

console.log(a)//2

this.__proto__.a = 2

猜的、试一下呢

刚才写错了、现在试一下吧


prototype和__proto__

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题