Entonces, ¿cómo empujo a la matriz CONSUPTION? Usar ESTO no funciona y no tengo ni idea de cómo hacer que funcione el PEDIDO.
const createMenu = (menu) => ({ fetchMenu: () => menu, consumption: [1,2], order: (string) => { this.consumption.push(string); }, pay: () => { let cont = 0 const cardapio = { ...menu.food, ...menu.drink} for (let itens of this.consumption){ cont += cardapio[itens]; }; return cont; }, });Cambie la función de flecha de order a una función normal, no es una buena idea usarla en un objeto.
La razón de esto es que en las funciones regulares, la palabra clave this representaba el objeto que llamó a la función. A diferencia de las funciones normales, las funciones de flecha no tienen su propio this . El valor de this dentro de una función de flecha sigue siendo el mismo durante todo el ciclo de vida de la función y siempre está vinculado al valor de this en la función principal más cercana que no sea de flecha.
const createMenu = (menu) => ({ fetchMenu: function(){ return menu}, consumption: [1,2], order: function(string) { this.consumption.push(string); }, pay: function() { let cont = 0 const cardapio = { ...menu.food, ...menu.drink} for (let itens of this.consumption){ cont += cardapio[itens]; }; return cont; }, }); const menu = createMenu(); console.log(menu.consumption); menu.order(3); console.log(menu.consumption); Más sobre this en la función de flecha se puede encontrar aquí