Задать вопрос
@olya_097

Что значит в this.addMethod код функции и тоесть для чего он?

function Calculator() {

  var methods = {
    "-": function(a, b) {
      return a - b;
    },
    "+": function(a, b) {
      return a + b;
    }
  };

  this.calculate = function(str) {

    var split = str.split(' '),
      a = +split[0],
      op = split[1],
      b = +split[2]

    if (!methods[op] || isNaN(a) || isNaN(b)) {
      return NaN;
    }

    return methods[op](a, b);
  }

  this.addMethod = function(name, func) {
    methods[name] = func;  //что значит?для чего он?и пример,если можно
  };
}

var calc = new Calculator;

calc.addMethod("*", function(a, b) {
  return a * b;
});
calc.addMethod("/", function(a, b) {
  return a / b;
});
calc.addMethod("**", function(a, b) {
  return Math.pow(a, b);
});

var result = calc.calculate("2 ** 3");
alert( result ); // 8
  • Вопрос задан
  • 717 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
nakree
@nakree
Fullstack Developer
В объекте methods создается ключ с именем name (который мы передали как аргумент) и этому ключу присваивается значение func (который мы тоже передали как аргумент) .

Эта строчка позволяет добавлять новые методы для калькулятора.
Например умножение:
calc.addMethod("*", function(a, b) {
  return a * b;
});


Первый аргумент "*" - имя ключа, второй аргумент - это анонимная функция, которая присваивается ключу.
В итоге объект methods будет выглядеть так:
methods = {
    "-": function(a, b) {
      return a - b;
    },
    "+": function(a, b) {
      return a + b;
    },
   "*": function(a, b) {
      return a * b;
  };


При обращению к одному из методов будет выполнятся соответствующая анонимная функция.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы