Get javascript code and modify it to execute chainable

Viewed 32

I want to change my code to execute chaining. this is my code:

let stepCount = {
    step: 0,
    up() {
        this.step++;
    },
    down() {
        this.step--;
    },
    showStep: function () {
       return this.step;
    }
};

How should I change it? I want to execute this code to get answer

stepCount.up().up().down().up();
2 Answers

you just need to return the current object from each function like this

let stepCount = {
  step: 0,
  up() {
    this.step++;
    return this;
  },
  down() {
    this.step--;
    return this
  },
  showStep() {
    console.log(this.step)
    return this;
  }
};

stepCount.up().up().down().showStep().down().showStep();

This should do the job:

class Step {
    constructor(count) {
        this.step = count;
    }

    up() {
        this.step++;
        return this;
    }

    down() {
        this.step--;
        return this;
    }
}

console.log(new Step(5).up().up().step); // 7
Related