Ниже приводится пример работы фрагмента кода написанного в стиле ООП --
основное преимущество состоит в использовании изолированного пространства имён, то есть мы можем не бояться совпадения имен функций и переменных:
/**
* Пример работы с "классом" - ООП на JavaScript
*/
function MyClassName()
{
/**
* Для вызова методов класса из других методов, вызванных в обработчиках
*/
var self = this; // ВАЖНО: назначим псевдоним
// набор каких-то элементов видимых в данном классе
var fromAppearcontrolSelector = ".reset-task-for-package";
var formBlockSelector = "#modal-reset-task-package";
var formSendControl = "#reset-task-package-button";
var resultResetMessageSelector = "#task-package-reset-message";
// далее методы класса
this.init = function() {
// например, привязываем обработчики
$(fromAppearcontrolSelector).on('click',function(){
$.simplebox(formBlockSelector);
return false;
});
$(formSendControl).on('click', this.resetTaskPackage); // вызываем другой метод класса из обработчика
};
/**
* В этйо функции для обращения к классу мы будем использовать псевдоним
* self, это позволит использовать её внутри обработчиков событий
* -- как это и происходит в методе init() выше
*
* @returns {Boolean}
*/
this.resetTaskPackage = function() {
var formData = $('#task-package-reset-form').serialize();
// вызваем один метод класса из другого
self.resetMessage();
// (вызов другого метода класса без this)
self.sendAjax('/ajax/resettaskpackagepartner4/', formData);
return false;
}
this.sendAjax = function(url, data) {
showLoaderIdentity(); // показываем идентификатор загрузки
$.ajax({ // сам запрос
type: 'POST',
url: url,
data: data, // данные которые передаём серверу
dataType: "json" // предположительный формат ответа сервера
}).done(function(res) { // если успешно
hideLoaderIdentity(); // скрываем идентификатор загрузки
console.log('Ответ получен: ', res);
if (res.success) { // если все хорошо
console.log('ОК!)');
self.showMessage(res.message);
// setInWorkStatus(data['batch-id']);
// removeUpdateLink(data['batch-id']);
} else { // если не нравится результат
console.log('Пришли не те данные!');
//alert(res.message);
}
}).fail(function() { // если ошибка передачи
hideLoaderIdentity();
console.log('Ошибка выполнения запроса!');
});
}
this.showMessage = function(message)
{
$(resultResetMessageSelector).text(message);
}
this.resetMessage = function()
{
$(resultResetMessageSelector).text('');
}
};
/*
* Jquery инициаллизация после загрузки страницы
*/
$(function() {
var taskPackage = new MyClassName();
taskPackage.init();
});