namespace pattern

by Artem

JavaScript

const app = (function() {
  'use strict';

  const MYAPP = {};

  MYAPP.$namespace = function(ns) {
    let parent = MYAPP;

    const parts = ns.split('.').slice(1);

    parts.forEach((part, idx) => {
      //console.log(parent, parts);
      if (typeof parent[part] === 'undefined') {
        parent[part] = {};
      }
      parent = parent[part];
    });

    return parent;
  };

  return MYAPP;
}());

var module2 = app.$namespace('MYAPP.modules.module2');
var module3 = app.$namespace('MYAPP.modules.module3');
console.log(app.modules); // true