Revealing Module Example

by DJ Martin

JavaScript

//Self-Executing Anonymous Function EXAMPLE
(function() {
  function tellMeThePoint(){
      alert("This code is executed in it's own scope.");
  }
  tellMeThePoint();
})();





//NAMESPACE EXAMPLE
window.clg = window.clg || {};
window.clg.razKids = window.clg.razKids || {};
window.clg.razKids.calculateTax = function(quantity) {
      return quantity * 1.06;
}
// alert(window.clg.razKids.calculateTax(12));




//Revealing Module Pattern: Singleton Example
var calculator = (function () {
    var add = function (a, b) {
        return a + b;
    };
    var subtract = function (a, b) {
        return a - b;
    };
    return {
        add: add,
        subtract: subtract
    };
})();
// alert(calculator.add(2, 3));




//Revealing Module Pattern: Instance Example
var Calculator2 = function () {
    var runningTotal = 0;
    var add = function (a) {
        runningTotal = runningTotal + a;
    };
    var subtract = function (a) {
        runningTotal = runningTotal - a;
    };
    var showTotal = function () {
        alert(runningTotal);
    };
    return {
        add: add,
        subtract: subtract,
        showTotal: showTotal
    };
};

var calc = new Calculator2();
calc.add(2);
//calc.showTotal();

calc.add(5);
//calc.showTotal();

calc.subtract(22);
//calc.showTotal();