Facade

by Ivan Gerasimenko

HTML

<div id="logger"></div>

JavaScript

var module = (function(params) {
  var _private = {
    i: params.i,
    startProc: function() {
      return ("starting process...<br />");
    },
    incI: function() {
      _private.i++;
      return "";
    },
    printI: function() {
      return ("i = " + _private.i + "<br />");
    }
  }
  
  return {
    facade: function() {
      return (  
          _private.startProc() +
          _private.printI() +
          _private.incI() +
          _private.printI() +
          _private.incI() +
          _private.printI());
    }
  }
})({i: 13});

/*
(function(params) {
  var smt = params.name1;
  ...
})({name1: val1, ...})

// immediately calling an anonymus function with a specific parameter
*/

document.getElementById('logger').innerHTML = module.facade();