类似于Array函数的JavaScript语法:[variable]({key},arg){}

ann*_*123 5 javascript ecmascript-6

我被要求研究雇主的守则,在守则中,雇主做了这样的事情:

export const actions = {
  [ACTIONS.ITEM_LIST.LOAD.name] ({commit}, payload) {
    const type = payload
Run Code Online (Sandbox Code Playgroud)

现在,在此,我无法纠正这一行代码

 [ACTIONS.ITEM_LIST.LOAD.name] ({commit}, payload) {
Run Code Online (Sandbox Code Playgroud)

像是功能还是什么?有人可以向我解释以上语法吗?

Poi*_*nty 1

新的 JavaScript 允许对象字面表达式({ }块初始化的actions名称)中的属性名称通过允许属性名称而不是像过去那样使用标识符或字符串常量来从表达式计算属性名称。[ ]

所以这意味着ACTIONS.ITEM_LIST.LOAD.name应该对其进行求值,并且最终的字符串值将用作对象的函数属性的名称。(这也是该语言的一个新功能;以前属性必须name : value严格)。

现在,在该函数的形式参数列表中,{commit}有一个解构形式参数。它的意思是,函数期望第一个参数是一个对象,因此在函数内部,参数(变量)commit应该绑定到该对象的“commit”属性的值(或者undefined如果没有这样的属性)。

因此,如果我们假设ACTIONS.ITEM_LIST.LOAD.name计算结果为字符串“xyz”,那么就可以调用:

var result = actions.xyz({ foo: "bar", commit: "everything" }, somePayload);
Run Code Online (Sandbox Code Playgroud)

在函数中,字符串“everything”将是参数的值commit