Is there a “concise” way to do namespacing in JavaScript?

Question :

Is there a “concise” way to do namespacing in JavaScript?,

Answer :

I’ve frequently encountered sites that put all of their JavaScript inside a namespace structure along the lines of:

namespaces = { com : { example: {'s data} }  

However, setting this up safely with respect to other namespaced frameworks seems to require a relatively hefty amount of code (defined as > 2 lines). I was wondering whether anyone knows of a concise way to do this? Furthermore, whether there’s a relatively standard/consistent way to structure it? For example, is the com namespace directly attached to the global object, or is it attached through a namespace object?

Read More  Learning Version Control, and learning it well

[Edit: whoops, obviously {com = { ... } } wouldn’t accomplish anything close to what I intended, thanks to Shog9 for pointing that out.]


Javascript doesn’t have stand-alone namespaces. It has functions, which can provide scope for resolving names, and objects, which can contribute to the named data accessible in a given scope.

Here’s your example, corrected:

var namespaces = { com: { example: { /*'s data */ } } }  

This is a variable namespaces being assigned an object literal. The object contains one property: com, an object with one property: example, an object which presumably would contain something interesting.

Read More  FAQ for Stack Exchange sites

So, you can type something like and it’ll all work. Of course, it’s also ridiculous. You don’t have a hierarchical namespace, you have an object containing an object containing an object with the stuff you actually care about.

var com_example_data = { /*'s data */ };  

That works just as well, without the pointless hierarchy.

Now, if you actually want to build a hierarchy, you can try something like this:

com_example = com_example || {};  com_example.flags = com_example.flags || { active: false, restricted: true};    com_example.ops = com_example.ops || (function()      {         var launchCodes = "38925491753824"; // hidden / private         return {           activate: function() { /* ... */ },           destroyTheWorld: function() { /* ... */ }         };      })();  

…which is, IMHO, reasonably concise.

Read More  Effective Ways to Introduce Agile into the Workplace?

That’s the answer Is there a “concise” way to do namespacing in JavaScript?, Hope this helps those looking for an answer. Then we suggest to do a search for the next question and find the answer only on our site.

Disclaimer :

The answers provided above are only to be used to guide the learning process. The questions above are open-ended questions, meaning that many answers are not fixed as above. I hope this article can be useful, Thank you