How Modules Work
var Modules  = (function Manager()  {
  var modules = {};
 
  function define(name, deps, impl) {
    for (var i=0; i<deps.length; i++) {
      deps[i] = modules[deps[i]];
    }
    modules[name] = impl.apply(impl, deps);
  }
 
  function get(name) {
    return modules[name];
  }
 
  return {
    define: define,
    get: get
  }
})();
 
/ * User module */
Modules.define("User", [], function() {
  function getName(name) {
    return "My name is " + name; 
  }
  return {
    getName: getName
  }
});
 
/ * Group module */
Modules.define("Group", ['User'], function(User, group) {
  function getUserGroup() {
    return "My name is " + User.getName() + ", Group:";
  }
  return {
    getUserGroup: getUserGroup
  }
});
 
console.log(Modules.get('User'));
console.log(Modules.get('Group'));
 
var User = Modules.get("User");
var Group = Modules.get("Group");
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License