title: How to set up JavaScript namespace and classes properly?
body: <p>It seems there are so many ways to set up a JavaScript application so it is confusing as to which one is correct or best. Are there any difference to the below techniques or a better way of doing this?</p>
  
  <pre><code>MyNamespace.MyClass = {
      someProperty: 5,
      anotherProperty: false,
  
      init: function () {
          //do initialization
      },
  
      someFunction: function () {
          //do something
      }
  };
  
  $(function () {
      MyNamespace.MyClass.init();
  });
  </code></pre>
  
  <p>Another way:</p>
  
  <pre><code>MyNamespace.MyClass = (function () {
      var someProperty = 5;
      var anotherProperty = false;
  
      var init = function () {
          //do something
      };
  
      var someFunction = function () {
          //do something
      };
  
      return {
          someProperty: someProperty
          anotherProperty: anotherProperty
          init: init
          someFunction: someFunction
      };
  }());
  
  MyNamespace.MyClass.init();
  </code></pre>
  
  <p>The first technique <em>feels</em> more like a class. I am coming from server-side background if this makes a difference. The second technique seems more redundant and a bit awkward, but I see this used a lot too. Can someone please help shed some light and advise the best way to move forward? I want to create a application with lots of classes talking to each other.</p>