Упомянутый путь объявления пространства имен автором книги действительно довольно хорош.Но когда вам нужно повторить это в нескольких файлах, а пространство имен имеет несколько подпространств имен, это может стать довольно утомительным:
if (!window.Foo) {
Foo = {};
}
if (!window.Foo.Bar) {
Foo.Bar = {};
}
if (!window.Foo.Bar.Baz) {
Foo.Bar.Baz = {};
}
etc...
Вместо этого вы должны написать простую функцию, которая позаботится об объявлении пространств имен для вас:1004 *
function namespace(ns) {
var parts = ns.split(/\./);
var obj = window;
for (var i=0; i<parts.length; i++) {
var p = parts[i];
if (!obj[p]) {
obj[p] = {};
}
obj = obj[p];
}
}
Теперь вы можете объявить все вложенное пространство имен одной строкой:
namespace("Foo.Bar.Baz");
В среде ExtJS это в основном то, что делает функция Ext.ns ().Я действительно не знаю о других библиотеках.