К примеру у вас есть такой модуль в файле toolbar.js:
Используете вы этот модуль просто подключением файла toolbar.js.
var toolbarModule = { toolbar: undefined, initToolbar: function (cell) { toolbarModule.toolbar = createToolbar(); } };
Используете вы этот модуль просто подключением файла toolbar.js.
toolbarModule.initToolbar(c);
Главный минус этого кода в том, что если вам понадобится еще один тулбар (например, для другого таба), то оба они будут делить переменную toolbarModule.toolbar и произойдет коллизия.
Чтобы решить эту проблему, нужно использовать либо классы, экземпляры, которых инкапсулируют в себе свои переменные. Либо нужно сделать так, чтобы всё нужное для функции передавалось через ее аргументы, и чтобы всё нужное от функции возвращалось в качестве результата.
Вариант с классами это по сути те же самые глобальные переменные только в рамках класса. Если использовать функции, то оверхедом будет увеличение количества параметров функции.
Мне больше нравится функциональный подход, когда "весь мир" передается в функцию. Классы как структуры больше подходят для хранения данных. Хотя с другой стороны, если функция использует другие функции, то проще их объединить в класс.