The “vanilla” store implementation you get by calling createStore only supports plain object actions and hands them immediately to the reducer.
However, if you wrap createStore with applyMiddleware, the middleware can interpret actions differently, and provide support for dispatching async actions. Async actions are usually asynchronous primitives like Promises, Observables, or thunks.
Definition 4: This value: in JavaScript this value is dynamically scoped, unless used in an arrow function.
That’s correct: as we know, the value of this is determined and provided exactly by the caller.
function produce() {
console.log(this.x);
}
const alpha = {produce, x: 1};
const beta = {produce, x: 2};
const gamma = {produce, x: 3};
console.log(
alpha.produce(), // 1
beta.produce(), // 2
gamma.produce(), // 3
);