Javascript 在Vue.js中与ES6中的函数结合使用的扩展运算符
我刚刚浏览了habitica代码(一个vue.js应用程序),发现下面的spread操作符用法是这样的。您有以下几点: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运算符与函数结合使用过,不
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实际上不是一个对象,因为您分配了任何有效值,最终,该函数所做的是分配键/值
,但基于某些条件或参数