我被要求研究雇主的代码,在代码中,雇主做了这样的事情:
export const actions = {
[ACTIONS.ITEM_LIST.LOAD.name] ({commit}, payload) {
const type = payload
现在,在此,我无法纠正这行代码
[ACTIONS.ITEM_LIST.LOAD.name] ({commit}, payload) {
比如它是一个函数还是什么?有人可以向我解释上面的语法吗?
最佳答案
新式 JavaScript 允许对象文字表达式中的属性名称(调用 { }
block 初始化 actions
的内容)计算 属性名称通过允许 [ ]
作为属性名称而不是过去的标识符或字符串常量来从表达式中提取。
所以这意味着 ACTIONS.ITEM_LIST.LOAD.name
应该被评估,并且最终成为的字符串值被用作对象的函数属性的名称。 (这也是该语言的一个新特性;以前的属性必须是 name : value
严格)。
现在在该函数的形式参数列表中,{commit}
是一个解构 形式参数。这意味着该函数期望第一个参数是一个对象,因此在函数内部,参数(变量)commit
应该绑定(bind)到该对象的“commit”属性的值(或undefined
如果没有这样的属性)。
因此,如果我们出于示例目的假设 ACTIONS.ITEM_LIST.LOAD.name
的计算结果为字符串“xyz”,那么就可以调用:
var result = actions.xyz({ foo: "bar", commit: "everything" }, somePayload);
在函数中,字符串“everything”将是 commit
参数的值。
关于类似于 Array function : [variable] ({ key }, arg) { } 的 JavaScript 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54879110/