JS | Variable Constructor

by Zoltan Boros

HTML

<pre id="output"></pre>

JavaScript

var output = document.getElementById("output");

function ForwardCounter(state)
{
    this.state = state;
    this.step = function() {
        output.innerHTML += (++this.state) + "\n";
    };
}

function ReverseCounter(state)
{
    this.state = state;
    this.step = function() {
        output.innerHTML += (--this.state) + "\n";
    };
}

function Counter(details)
{
    if (details.direction && details.direction === "reverse") {
        return new ReverseCounter(details.state);
    } else {
        return new ForwardCounter(details.state);
    }
}

var counter1 = new Counter({ state : 0 });
var counter2 = new Counter({ state : 100, direction : "reverse" });

counter1.step();
counter2.step();
counter1.step();
counter2.step();