Module pattern

by bhupendra negi

HTML

<p>
  Modules using Closure
</p>

JavaScript

// classical 
var module1 = (function() {

  var obj = {
    name: "Ram",
    city: "ggn"
  }

  return {
    getName: function() {
      return obj.name
    }
  }

})();

console.log(module1.getName());

// revealing module pattern
var module2 = (function() {

  var obj = {
    name: "Shyam",
    city: "ggn"
  }

  var publicApi = {
    getName: function() {
      return obj.name
    }
  }

  return publicApi;
})();
console.log(module2.getName());


// AMD Modules

function define(fName, fn) {
 //  var obj = {};
 // obj[fName] = fn();
  window[fName] = fn();
}

 define("module3", function() {

  var obj = {
    name: "Radhe Radhe",
    city: "ggn"
  }

  var publicApi = {
    getName: function() {
      return obj.name
    }
  }

  return publicApi;
});
console.log(module3.getName());