Это разновидность функций более высокого порядка, где ваша функция (с параметром состояния) заменяется другой функцией (без параметра), которая при вызове вызывает вашу функцию и предоставляет параметр состояния из ее собственного контекста.
Исходный код здесь , я упростил код оболочки из строк 303 и 425
module.forEachGetter((rawGetter, key) => {
store._wrappedGetters[key] = function wrappedGetter (store) {
return rawGetter(
local.state, // local state
local.getters, // local getters
store.state, // root state
store.getters // root getters
)
}
})
В строке 233 вы можете видеть, что wrappedGetters добавляются в магазинСвойство .getters как получатели javascript и поставляется с параметром store.Опять же, это упрощается, поскольку геттеры добавляются как вычисляемые свойства для использования преимуществ кэширования значений.
forEachValue(wrappedGetters, (fn, key) => {
Object.defineProperty(store.getters, key, {
get: () => fn(store),
enumerable: true // for local getters
})
})