Наверное каждый когда-либо писал свою библиотеку всяких нужных и не очень функций. Я изучаю js, поэтому тоже вот потихоньку пишу всякие плюшки и чета их стало много. Решил оформить все в виде библиотеки, чтобы не захламлять глобальное пространство. Выглядит это так:
var GLIB = (function(){
var $G = {};
$G.scroll = function(){
/*****/
};
$G.serialize = function(){
/*****/
};
// и т.д. и т.п...
return $G;
}());
Однако теперь столкнулся с проблемой захламления пространства самой библиотеки.
Ну к примеру написал я некий модуль, который делает ajax запросы. У него есть настройки по дефолту, функция установки настроек, непосредственно функция отправки запросов и т.д... То есть модуль состоит из нескольких функций:
var GLIB = (function(){
var $G = {};
/*** Ajax ***/
$G.ajax = function(){/* делает запросы и выполняет заданные функции */};
$G.ajaxSetup = function(){/* установка глобальных опций */};
$G.ajaxSetting = {/* дефолтные настройки */};
/*** Other ***/
$G.scroll = function(){/*****/};
$G.serialize = function(){/*****/};
// и т.д. и т.п...
return $G;
}());
Проблема в том, что в составе модуля не все функции должны быть расшарены наружу. Например объект $G.setting не должен быть доступен для прямой записи в него. Значит что? значит нужно
// вместо
$G.ajaxSetting = {};
//сделать
var ajaxSetting = {};
Все, наружу эта переменная не доступна, но она теперь захламляет пространство внутри библиотеки...
Короче я уже не знаю, как лучше оформить свою библиотеку, чтобы и имена переменных были короткие, и чтобы потом не было конфликтов внутри.