makeCounter Object

clogure, function + methods

by Denni Adam

HTML

<div id='wrapper'></div>

CSS

.even, .odd {
    min-height: 20px;
    padding: 5px;
    margin: 5px 0;
}
.even {
    color: blue;
    border: 1px dashed blue;
    background-color: #eef;
}
.odd {
    color: red;
    border: 1px dashed red;
    background-color: #fee;
}

JavaScript

function cLog() {
    var divNum = 0;
    return function (msg) {
        divNum++;
        var divId = 'd' + divNum;
        var divClass = (divNum % 2 == 0) ? 'even' : 'odd';
        var e = document.createElement('div');
        e.setAttribute('class', divClass);
        e.setAttribute('id', divId);
        document.getElementById('wrapper').appendChild(e);
        document.getElementById(divId).textContent = msg;
        return divNum;
    };
}

function makeCounter() {
    var currentCount = 0;

    function counter() {
        return ++currentCount;
    }

    counter.set = function(value) {
        currentCount = value;
        return currentCount;
    };

    counter.reset = function () {
        currentCount = 0;
        return currentCount;
    };
    return counter;
}

var counter = makeCounter();
var _print = cLog();
_print(counter());
_print(counter());
_print(counter.set(15));
_print(counter());
_print(counter.reset());
_print(counter());
_print(counter());