Open JenMorgan opened 3 years ago
function Calculator () {
this.calculate = function (str) {
let newArr = [];
newArr = str.split(" ");
if (newArr[1] === "+") {
return (+newArr[0] + +newArr[2]);
} else if (newArr[1] === "-") {
return (+newArr[0] - +newArr[2]);
}
else {
let name = newArr[1];
let a = +newArr[0];
let b = +newArr[2];
return this[name](a, b);
}
};
this.addMethod = function (name, func) {
this[name] = func;
};
}
let powerCalc = new Calculator;
powerCalc.addMethod("*", (a, b) => a * b);
powerCalc.addMethod("/", (a, b) => a / b);
powerCalc.addMethod("**", (a, b) => a ** b);
let result = powerCalc.calculate("2 * 3");
alert( result );
function Calculator () {
this.calculate = function (str) {
const newArr = str.split(" ");
const [a, operation, b] = newArr;
if (operation === "+") {
return (+a + +b);
} else if (operation === "-") {
return (+a - +b);
} else {
return this[operation](a, b);
}
};
this.addMethod = function (name, func) {
this[name] = func;
};
}
Создайте функцию конструктор Calculator, которая создаёт «расширяемые» объекты калькулятора.
Задание состоит из двух частей.
Во-первых, реализуйте метод calculate(str), который принимает строку типа "1 + 2" в формате «ЧИСЛО оператор ЧИСЛО» (разделено пробелами) и возвращает результат. Метод должен понимать плюс + и минус -.
Затем добавьте метод addMethod(name, func), который добавляет в калькулятор новые операции. Он принимает оператор name и функцию с двумя аргументами func(a,b), которая описывает его.