Conseguí este ejercicio de la escuela:
Implemente la función de cálculo que devuelve un objeto que brinda la capacidad de realizar las cuatro operaciones matemáticas (suma, resta, multiplicación y división) en el mismo número y finalmente imprime el resultado.
SUGERENCIA: para concatenar los métodos, simplemente devuelva la referencia al objeto mismo ($this)
Ejemplo:
calculadora .sumar(2) // 2 .sumar(4) // 6 .multiplicar(3) // 18 .sub(1) // 17 .sub(3) // 14 .divide(2) // 7 . imprimirResultado();
Lo que hice:
function calculate() { let result = 0; let calculator = { add: function(number) { return result += number; }, multiply: function(number) { return result *= number; }, sub: function(number) { return result -= number; }, divide: function(number) { return result /= number; }, printResult: function() { return result; } } return calculator; } const calculator = calculate(); calculator.add(2).add(4).multiply(3).sub(1).sub(3).divide(2).printResult(); // The result will be: 7Por favor ayúdenme se que esta mal pero no entendí los cierres con objetos. También dame explicaciones.
Los métodos de la calculadora add , multiply , etc. deberían devolver el objeto de la calculadora (que es this ), no el resultado. Entonces, con una pequeña modificación, funcionará.
function calculate() { let result = 0; let calculator = { add: function(number) { result += number; return this; }, multiply: function(number) { result *= number; return this; }, sub: function(number) { result -= number; return this; }, divide: function(number) { result /= number; return this; }, printResult: function() { return result; } } return calculator; } const calculator = calculate(); let result = calculator.add(2).add(4).multiply(3).sub(1).sub(3).divide(2).printResult(); // The result will be: 7 console.log(result);