this + prototypes + module.export

HTML

<div id="display"></div>

CSS

.comment {
    color: silver;
}

JavaScript

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

var namespace = (function () {
    // private methods
    var addQuarter = function (f) {
        return f + 0.25;
    };
    // public constructor
    var addOne = function (a) {
        //this.a = a + 1;
        //this.result = this.a;
        this.result = a + 1;
        return this;
    };
    // public prototypes of addOne
    addOne.prototype = {
        addMore: function(d) {
            //this.d = d;
            //this.result = this.result + this.d;
            this.result = this.result + d;
            return this;
        },
        multiplyMore: function(e) {
            //this.e = e;
            //this.result = this.result * this.e;
            //this.result = addQuarter(this.result);
            this.result = addQuarter(this.result * e);
            return this;
        },
        displayResult: function() {
            return this.result;
        },
        addOne: addOne
    };
    // return block
    return {
        addOne: addOne
    };
})();

module.exports = namespace;

display.innerHTML += namespace.addOne(3).result + " <span class='comment'>// 3+1</span>";
display.innerHTML += "<br>";
display.innerHTML += new namespace.addOne(3).addMore(5).multiplyMore(2).result + " <span class='comment'>// 3+1+5*2(+0.25)</span>";
display.innerHTML += "<br>";
display.innerHTML += new namespace.addOne(3).multiplyMore(2).addMore(5).displayResult() + " <span class='comment'>// 3+1*2(+0.25)+5</span>";
display.innerHTML += "<br>";
display.innerHTML += new namespace.addOne(3).displayResult() + " <span class='comment'>// 3+1</span>";
display.innerHTML += "<br>";
display.innerHTML += new namespace.addOne(3).addOne(4).displayResult() + " <span class='comment'>// 4+1</span>";
display.innerHTML += "<br>";

console.log(namespace.addOne(3).result + " // 3+1");
console.log(new namespace.addOne(3).addMore(5).multiplyMore(2).result + " // 3+1+5*2(+0.25)");
console.log(new...