Vue 使变量在所有组件中可用

Vue making a variable available in all components

我目前正在从 dom 中读取语言设置并将其设置为 global Vue.js 变量,如下所示:

const language = document.querySelector('html').getAttribute('lang');
Vue.prototype.$language = language;

它工作正常,但我也看到了这个来自 Vue.js 事件总线的例子:

Object.defineProperties(Vue.prototype, {
    $bus: {
        get() {
            return EventBus;
        }
    }
});

这两者之间的真正区别是什么?是否有更可取的方法?

Object.defineProperties 可用于设置 属性 描述符,例如 getter、setter、只读等。

但在你的情况下使用 Vue.prototype.$language = language; 将是更简洁的方法。

如果您正在寻找 Vue 首选方式,这是关于向 Vue 实例添加实例属性的 guide