@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.
Подскажите инфу по схожей теме.
  • Вопрос задан
  • 117 просмотров
Решения вопроса 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
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
RUVOD Москва
До 150 000 руб.
UMA.TECH Москва
от 150 000 до 215 000 руб.
Foodtronics Москва
от 100 000 до 200 000 руб.