Помогите разобраться функцией конструктором на js

Помогите пожалуйста разобраться с методами объектов, т.к. уже 2 часа пытаюсь решить задачу, но к сожалению как-то безуспешно(

Нужно создать функцию конструктов который создает 'калькулятор' с помощью методов

  • init(num) - установить значение
  • add(num) - сложение
  • sub(num) - вычитание
  • div(num) - деление
  • mul(num) - умножение
  • alert - показывает текущий результат

Если не лень написать решение(чтобы я потом сам разобрался) или подсказать как-то, буду весьма признателен))

нужно чтобы работало с этим примером

const calc = new Calculator();

console.log(
    calc
        .init(2)
        .add(2)
        .mul(3)
        .div(4)
        .sub(2).result // 1
);

calc.alert();

Ответы (1 шт):

Автор решения: vsemozhebuty

Вам нужно сохранять промежуточный результат как поле класса и в методах возвращать сам экземпляр, чтобы можно было строить цепочку вызовов:

class Calculator {
  constructor() {
    this.result = 0;
  }

  init(num) {
    this.result = num;
    return this;
  }

  add(num) {
    this.result += num;
    return this;
  }

  sub(num) {
    this.result -= num;
    return this;
  }

  mul(num) {
    this.result *= num;
    return this;
  }

  div(num) {
    this.result /= num;
    return this;
  }

  alert() {
    alert(this.result);
    return this;
  }
}

const calc = new Calculator();

console.log(
  calc
    .init(2)
    .add(2)
    .mul(3)
    .div(4)
    .sub(2).result // 1
);

calc.alert();

→ Ссылка