Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Vue.js中与ES6中的函数结合使用的扩展运算符_Javascript_Vue.js_Ecmascript 6 - Fatal编程技术网

Javascript 在Vue.js中与ES6中的函数结合使用的扩展运算符

Javascript 在Vue.js中与ES6中的函数结合使用的扩展运算符,javascript,vue.js,ecmascript-6,Javascript,Vue.js,Ecmascript 6,我刚刚浏览了habitica代码(一个vue.js应用程序),发现下面的spread操作符用法是这样的。您有以下几点: computed: { ...mapState({ user: 'user.data', castingSpell: 'spellOptions.castingSpell', isRunningYesterdailies: 'isRunningYesterdailies', }), } 现在我似乎从来没有将spread运算符与函数结合使用过,不

我刚刚浏览了habitica代码(一个vue.js应用程序),发现下面的spread操作符用法是这样的。您有以下几点:

computed: {
  ...mapState({
    user: 'user.data',
    castingSpell: 'spellOptions.castingSpell',
    isRunningYesterdailies: 'isRunningYesterdailies',
  }),
}
现在我似乎从来没有将spread运算符与函数结合使用过,不确定这里发生了什么,
mapState
碰巧是另一个文件中的函数,看起来是这样的:

export function mapState (states) {
  const res = {};

  normalizeMap(states).forEach(({ key, val }) => {
    res[key] = function mappedState () {
      return typeof val === 'function' ?
        val.call(this, this.$store.state, this.$store.getters) :
        get(this.$store.state, val);
    };
  });

  return res;
} 

当与
数组
对象
一起使用时,我理解spread运算符,但函数在这里到底发生了什么?

您的函数返回的是一个正在被展开的
对象

你可以通过一个简单的例子来理解

  • 这里的
    func
    是一个函数,它根据传递给它的值创建一个对象
  • me
    对象中,我有一个名为
    info
    的属性,我想将其设置为对象,因此我只需使用
    名称和年龄
    调用
    func
    ,然后进行扩展
let func=(姓名,年龄)=>({name,年龄})
让我={
信息:{…func('code maniac',24)}
}

console.log(me)
您的函数返回一个正在传播的
对象

你可以通过一个简单的例子来理解

  • 这里的
    func
    是一个函数,它根据传递给它的值创建一个对象
  • me
    对象中,我有一个名为
    info
    的属性,我想将其设置为对象,因此我只需使用
    名称和年龄
    调用
    func
    ,然后进行扩展
let func=(姓名,年龄)=>({name,年龄})
让我={
信息:{…func('code maniac',24)}
}

console.log(me)
函数返回一个对象,这是spread运算符正在使用的对象。函数返回一个对象,该对象最终被展开以将值放置在您的
计算的
对象上。函数返回一个对象,这是spread运算符正在使用的对象。函数返回一个对象,这最终会被扩展到在
computed
对象上放置值。谢谢,但是vue.js中的
computed
属性不应该只包含函数吗?@AlexanderSolonik对象的值是函数。@AlexanderSolonik实际上不是一个对象,因为您为它分配了任何有效值,最终,此函数所做的是分配
键/值
,但基于某些条件或参数。谢谢,但是vue.js中的
计算的
属性是否仅包含函数?@AlexanderSolonik对象的值是函数。@AlexanderSolonik实际上不是一个对象,因为您分配了任何有效值,最终,该函数所做的是分配
键/值
,但基于某些条件或参数