Tworzenie przestrzeni nazw dla modułów w aplikacji (JS Patterns)
/* 01. deklaracja */
//niebezpiecznie
var myApp = {};
//lepiej
if(typeof myApp === 'undefined') {
myApp = {};
}
//super
myApp = myApp || {};
/* 02. tworzenie właściwości aplikacji */
//źle - tym sposobem łatwo nadpisać właściwości
myApp.modules.addSomething;
//super - tworzy właściwości tylko w przypadku gdy zadeklarowana aplikacja takowej nie posiada
myApp.nameSpace = function(str) {
var parts = str.split('.'),
appName = 'myApp',
parent = myApp,
i;
if(parts[0] === appName) {
parts = parts.splice(1);
}
for(i = 0; i < parts.length; i++) {
if(typeof parent[parts[i]] === 'undefined') {
parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
return parent;
}
myApp.nameSpace('myApp.modules.addSomething');