en.javascript.info/1-js/04-object-basics/06-constructor-new/4-calculator-extendable/task.md
Ilya Kantor 6c9c2219ba up
2017-01-07 01:25:31 +01:00

2.1 KiB
Raw Blame History

importance: 5


Создайте калькулятор

Напишите конструктор Calculator, который создаёт расширяемые объекты-калькуляторы.

Эта задача состоит из двух частей, которые можно решать одна за другой.

  1. Первый шаг задачи: вызов calculate(str) принимает строку, например "1 + 2", с жёстко заданным форматом "ЧИСЛО операция ЧИСЛО" (по одному пробелу вокруг операции), и возвращает результат. Понимает плюс + и минус -.

    Пример использования:

    var calc = new Calculator;
    
    alert( calc.calculate("3 + 7") ); // 10
    
  2. Второй шаг -- добавить калькулятору метод addMethod(name, func), который учит калькулятор новой операции. Он получает имя операции name и функцию от двух аргументов func(a,b), которая должна её реализовывать.

    Например, добавим операции умножить *, поделить / и возвести в степень **:

    var powerCalc = new Calculator;
    powerCalc.addMethod("*", function(a, b) {
      return a * b;
    });
    powerCalc.addMethod("/", function(a, b) {
      return a / b;
    });
    powerCalc.addMethod("**", function(a, b) {
      return Math.pow(a, b);
    });
    
    var result = powerCalc.calculate("2 ** 3");
    alert( result ); // 8
    
  • Поддержка скобок и сложных математических выражений в этой задаче не требуется.
  • Числа и операции могут состоять из нескольких символов. Между ними ровно один пробел.
  • Предусмотрите обработку ошибок. Какая она должна быть - решите сами.