Самый быстрый первый шаг, основанный на том, что вы сделали в прошлом с большим количеством глобальных переменных и функций, - просто взять все из них и сделать их свойствами одного объекта. Этот единственный объект объявлен как глобальная переменная, но это ваша глобальная переменная only и, по сути, ваше новое пространство имен, поэтому вам нужно беспокоиться только об одном имени, потенциально конфликтующем с другими библиотеками.
Относительно этого непосредственно к примеру, который вы привели с помощью a, b и т. Д .:
var SNS = {}; // create some namespace object
SNS.a = "something";
SNS.b = "something else";
SNS.c = 17;
SNS.method1 = function(x) {
alert(SNS.a + x);
};
SNS.method2 = function() {
SSN.method1(12); // call another function
};
SNS.SUB = {};
SNS.SUB.property1 = "sub namespace prop 1";
SNS.SUB.method1 = function() {};
// etc.
В моем примере «SNS» используется для «некоторого пространства имен»; Я уверен, что вы сразу можете увидеть, как это было бы довольно легко применить к проекту, который вы только что завершили. Вероятно, вы также можете увидеть недостаток, заключающийся в том, что для того, чтобы ваши методы ссылались друг на друга и на ваши переменные, вы должны ставить перед ними префикс имени вашего объекта. Если у вас есть подпространства имен, это еще хуже. К счастью, есть способы обойти это, но я объявляю их вне рамок этого ответа.
Сказав все это, кое-что, что вы можете прочитать (Google), является "шаблоном разоблачающего модуля" - поможет вам сделать немного больше OO (если это то, что вы хотите).
Действительно подробный ответ на ваш вопрос можно найти здесь: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-1/
Дальнейшее чтение:
http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth