@dmitriyivvvv

Как реализовать такой калькулятор на JS?

Добрый день. Задался идеей как реализовать такой калькулятор:
const calc = new Calc;
calc.one.plus.two // 3
calc.one.minus.four // -3
calc.one.plus.one.minus.two // 0
calc.one // 1
и т.д. У него 4 операции(divide, plus, minus, times) и цифры от 0 до 9.
Подскажите инфу по схожей теме.
  • Вопрос задан
  • 159 просмотров
Решения вопроса 2
@abberati
frontend-разработчик
Вам нужны геттеры и chaining методов. Гугл в помощь.
Ответ написан
Комментировать
@StockholmSyndrome
function Calc() {
  let state = {};

  let digits = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
  for (let i = 0, l = digits.length; i < l; i++) {
    Object.defineProperty(this, digits[i], {
      get: function() {
        if (!state.o) {
          state.v = i;
          return this;
        }

        if (state.o === 'plus') state.v = state.v + i; 
        if (state.o === 'minus') state.v = state.v - i; 
        if (state.o === 'times') state.v = state.v * i; 
        if (state.o === 'divide') state.v = state.v / i; 

        return this;
      }
    });
  }

  let operations = ['plus', 'minus', 'times', 'divide'];
  for (let i = 0, l = operations.length; i < l; i++) {
    Object.defineProperty(this, operations[i], {
      get: function() {
        state.o = operations[i]; 
        return this;
      }
    });
  } 

  this.value = function() {
    let {v} = state;
    state = {};
    return v;
  }; 
}

let calc = new Calc();
console.log(calc.one.plus.two.value()); // 3
console.log(calc.one.minus.four.value()); // -3
console.log(calc.one.plus.one.minus.two.value()); // 0
console.log(calc.one.value()); // 1
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы