Pattern - Module Namespacing
by zachshallbetter
JavaScript
var myNamespace = (function() {
// Initially defining the variables
var myPrivateVar, myPrivateMethod;
// A private counter variable
myPrivateVar = 0;
// A private function which logs any arguments
myPrivateMethod = function(foo) {
console.log(foo);
};
return {
// A public variable
myPublicVar: "foo",
// A public function utilizing privates
myPublicFunction: function(bar) {
// Increment our private counter
myPrivateVar++;
// Call our private method using bar
myPrivateMethod(bar);
}
};
})();
// Returns "foo"
console.log(myNamespace.myPublicVar);
// Returns undefined
console.log(myNamespace.myPublicFunction.myPrivateMethod);