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  How can I empty the recycle bin for all users from a Windows service application in c#

[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  What is the most useful multi-purpose open-source library for java?

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  Memory leak detectors for C?

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