New-ish 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);
и вфункция строка "everything" будет значением параметра commit
.