我刚刚浏览了habitica代码(一个vue.js应用程序),遇到了以下HERE这样的传播算子用法。在内部计算中,您具有以下内容:
computed: {
...mapState({
user: 'user.data',
castingSpell: 'spellOptions.castingSpell',
isRunningYesterdailies: 'isRunningYesterdailies',
}),
}
现在,我似乎从来没有将扩散运算符与函数结合使用,不确定这里发生了什么,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;
}
我了解与Array
或Object
一起使用时的传播算子,但是函数在这里到底发生了什么?
答案 0 :(得分:2)
您的函数正在返回Object
,该代码正被传播,
您可以通过一个简单的示例来了解
func
是一个函数,它根据传递给它的值创建一个对象me
对象内部,我有一个称为info
的属性,我想将该属性设置为一个对象,因此我只需用func
调用name and age
并传播
let func = (name,age)=> ({name,age})
let me = {
info: {...func('code maniac', 24)}
}
console.log(me)