Stoyan Stefanov, in his Object-Oriented JavaScript, proposes an utility function to create JavaScript namespaces inside your library. Namespaces are a basic coding pattern used to avoid collision between libraries. In its essence, this method works as follows:
APP.namespace('dom.style');
instead of writing:
APP.dom = {}; APP.dom.style = {};
Stoyan explains it as follows:
Here's how you can create such a
namespace()
method. First you create an array by splitting the input string using the period (.) as a separator. Then, for every element in the new array, you add a property to your global object if such a property doesn't already exist.
var APP = {}; APP.namespace = function(name) { var parts = name.split('.'); var current = APP; for(var i in parts) { if(!current[parts[i]]) { current[parts[i]] = {}; } current = current[parts[i]]; } }
Usage:
APP.namespace('event'); APP.namespace('dom.style');
This result is exactly the same of writing:
var APP = { event: {}, dom: { style: {} } }