搜索

首页  >  问答  >  正文

javascript - 请问下面代码中的...是扩展运算符还是操作运算符?这样写是什么意思?

vuex中的代码

computed:{
    ...mapState(["count"]),
    count(){
        return this.$store.getters.count;
    }
},

请问mapState前面的...是什么意思?加这个和不加这个有什么区别?已经看过扩展运算符和操作运算符的相关文档,不过还是不太明白,求详细点的解释。。

漂亮男人漂亮男人2736 天前914

全部回复(3)我来回复

  • 仅有的幸福

    仅有的幸福2017-06-26 10:54:17

    自己写几个例子不就知道了…………比如:

    const state = {
        a: 1,
        b: 2,
        c: 3
    };
    const now = {
        ...state,
        d: 4,
        e: 5
    };
    
    console.log(now);

    这个语法大部分浏览器还不支持,所以你可以先去babel转一下,把转码后的代码直接放到控制台运行,看看出来的是啥。这个运算符其实挺简单的……

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-26 10:54:17

    ... 把对象在此地展开为键值对。如果直接写,有语法错误或者逻辑错误。

    借用 @xiaoboost 的例子:

    有 ... 运算符,点击查看

    const state = {
        a: 1,
        b: 2,
        c: 3
    };
    const now = {
        ...state,
        d: 4,
        e: 5
    };
    
    console.log(now);
    

    结果是

    Object {
      "a": 1,
      "b": 2,
      "c": 3,
      "d": 4,
      "e": 5
    }
    

    没有 ... 运算符,点击查看

    结果是:

    Object {
      "d": 4,
      "e": 5,
      "state": Object {
        "a": 1,
        "b": 2,
        "c": 3
      }
    }
    

    回复
    0
  • ringa_lee

    ringa_lee2017-06-26 10:54:17

    ...mapState(["count"])
    加...是为了将mapState对象分割,返回分离的各项,就可与局部计算属性(computed)混合使用了
    不加... mapState可是一个对象 computed也是一个对象 那就得一个一个的属性赋值吧
    或者你computed对象里不打算有其他属性,你直接computed:mapState(["count"])应该也可以

    回复
    0
  • 取消回复