后端出身,偶尔兼职写写前端
如下代码:
new Vue({
  el: '#app',
  router,
  store,
  i18n,
  test,
  render: h => h(App)
})
// 用的时候
 this.$store.dispatch(xxx)
这里的 $store 是不是仅仅是 vue 里的一种命名方式而已?只要我在 new Vue 里初始化的了的,都可以用$+name 来调用
例如上面的$test,$i18n
|      1swaggeek      2018-11-08 17:29:03 +08:00 $的话,看文档的介绍,是内部函数的一种特殊命名方式。 | 
|  |      3wildnode      2018-11-08 17:33:03 +08:00  1 我理解的 $ 只是一种约定俗成的明明方式,表示这个属性或者方法存在于 Vue 实例的原型上: 比如 $store 也是 Vuex 源码中挂载到 Vue 根实例上去的 | 
|  |      4wildnode      2018-11-08 17:33:20 +08:00 明明 => 命名 | 
|  |      6c9y      2018-11-08 17:37:46 +08:00 via Android  1 我的理解是:表示 私有,因为你定义的方法也会在实例的 this 链里。 | 
|  |      7nealv2ex      2018-11-08 17:40:18 +08:00  1 https://cn.vuejs.org/v2/guide/instance.html#%E6%95%B0%E6%8D%AE%E4%B8%8E%E6%96%B9%E6%B3%95 > 除了数据属性,Vue 实例还暴露了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。 | 
|  |      10shintendo      2018-11-08 17:53:30 +08:00 简单回答楼主的关键问题:你传的 store 和它自己的$store 只是碰巧同名,你传进去的变量可以是任何名字 | 
|      11zhzer      2018-11-08 17:58:09 +08:00 via Android 一般指代特殊变量,dom 对象,私有方法之类的 就是约定俗成,我通常用来标记 dom 用 | 
|  |      12imherer OP @shintendo  那 this.$store 这里的$store 对应的是就是我上面传进去的 store 了? 还有我上面还传了一个 test,那我可以 this.$test 这样使用吗? | 
|  |      13imherer OP @swaggeek 文档里这样说的 “除了数据属性,Vue 实例还暴露了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来” 那我自己可以新增吗? 例如上面我在 new Vue 的时候传入了 test,我可以 this.$test 这样使用吗?还是$只能是 Vue 定义好的? | 
|  |      14lrz0lrz      2018-11-08 19:27:31 +08:00  1 @imherer #12 不可以,你可以把 this.$store 与 store 当成完全不同的东西。 如果想要自己新增,可以通过 Vue.prototype.$xxx 的方式添加。 之所以前面加 $,只是为了不与用户定义的属性冲突而已。 | 
|  |      15shintendo      2018-11-08 20:39:03 +08:00  1 @imherer  可以自己新增,但不是通过传入 new Vue,而是通过手动赋值:Vue.prototype.$test = test 比如最常见的 Vue.prototype.$http = axios | 
|      16asdf123101      2018-11-08 20:47:15 +08:00 via Android 纯粹是约定,并不表示特殊含义 | 
|  |      17Trim21      2018-11-08 21:31:36 +08:00 via Android  1 |