Приведу пример модуля
var AppMenu = (function () {
var _self;
var _protectFn;
function AppMenu() {
_self = this;
}
AppMenu.prototype = {
changeStatus:function(status){
var elements = _protectFn.getCheckedElements();
var data = {"req":"changeStatus","status":status,"elements":elements};
if (elements.length>0) {
if (confirm("Вы уверены что хотите изменить статус у "+elements.length+" объектов?")) {
new ajaxSender({
url:'/office/appMenu/status',
data:data,
success: function(answer){
_protectFn.afterChangeStatus(answer);
}
}).send();
}
}
}
//и так далее публичные методы
}
_protectFn = {
getCheckedElements:function(){
var els = [];
$(".checks").each(function(){
if ($(this).is(':checked')) {
els[els.length] = $(this).attr("data-el");
}
});
return els;
},
afterDelete:function(answer){
//
}
//и так далее защишеные методы
}
return AppMenu;
})();
Бывает так что надо чтобы элемент создавал новый экземпляр, иногда нужно запустить метод в уже созданном экземпляре. Поэтому вещать на элементы onclick="new blablabla" не всегда подходит. А награмождать лишний код тоже неохото.