Расширения для JavaScript¶
Если мы хотим расширить стандартный функционал сторонних библиотек или написать какой-то свой плагин, нужно придерживаться правил написания плагинов jQuery.
Прочитать про них можно тут: http://docs.jquery.com/Plugins/Authoring
Все наши плагины должны начинаться с префикса ce
, например ceDialog
, ceEditor
.
В большинстве случаев плагин выглядит вот так:
(function($){
function _privateMethod()
{
}
var methods = {
run: function() {
},
destroy: function() {
}
};
$.fn.ceEditor = function(method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if ( typeof method === 'object' || ! method ) {
return methods.run.apply(this, arguments);
} else {
$.error('ty.editor: method ' + method + ' does not exist');
}
};
$.ceEditor = function(action, data) {
if (action == 'push') {
...
} else if (action == 'state') {
...
} else if (action == 'handlers') {
}
}
})($);
Использование плагина¶
$('.class').ceEditor();
— вызовет метод по-умолчанию - в нашем случаеrun
$('.class').ceEditor('destroy');
— вызовет, соответственно, методdestroy
$.ceEditor('push', some_data);
— вызовет статический методceEditor
, не привязанный ни к какому элементу. Он нужен для того, чтобы работать с коллекциями элементов, на которые навешан плагин. Например, хранить стек диалоговых окон и т.п. Вообще использование такого метода не рекомендуется без острой необходимости, т.к. это по факту работа с глобальными объектами.