Есть калькулятор, вызов методов которого можно осуществлять следующим образом:
console.log(Calculator.getResult()); // 0
Calculator.add(4)(1);
console.log(Calculator.getResult()); // 5
Calculator.subtract(1)(1)(1)(2);
console.log(Calculator.getResult()); // 0
Калькулятор - фул кодfunction Calc(){
var res = 0;
return {
add: function add(x){
if (!isNaN(x)) res += x;
return add;
},
subtract: function sub(x){
if (!isNaN(x)) res -= x;
return sub;
},
divide: function div(x){
if ((!isNaN(x)) && (x !== 0)) res /= x;
return div;
},
multiply: function mult(x){
if (!isNaN(x)) res *= x;
return mult;
},
getResult: function (){
return res;
},
reset: function (){
res = 0;
return res;
}
}
}
var Calculator = new Calc();
module.exports = Calculator;
Необходимо модифицировать данный код, чтобы был возможен вызов методов следующим образом:
const result = Calculator.add(100)
.multiply(2)
.divide(20)
.reset()
.subtract(1)
.getResult();
console.log(result); // -1
Как это осуществить? Что вообще происходит (должно происходить) при таком вызове?