Я бы сказал, что первый способ создания методов - это неправильное использование jQuery. Синтаксис jQuery.fn.foo
обычно зарезервирован для функций, которые действуют на элемент DOM, но вы используете их как статические функции, используя пустой объект jQuery.
Если вы хотите создать статические функции в пространстве имен jQuery, вы можете сделать:
jQuery.foo = function(){};
затем позвоните через:
jQuery.foo();
вместо:
jQuery.fn.foo = function(){};
, что позволяет вам:
jQuery('#someElementId').foo();
С точки зрения ООП. Есть много разных подходов (шаблон модуля, прототип, фабрика ...). Обычно я подхожу к этому, создав Класс как статическую функцию, затем вызывая его с ключевым словом new
(function($){
var undefined;
$.ClassName = function(options){
var self = this;
var cfg = $.extend(true, {}, this.defaults, options);
// ********************
// start:private
// ********************
function _init(){
};
// ********************
// start:public
// ********************
this.methodName = function(){
};
_init();
};
$.ClassName.prototype.defaults = {};
})(jQuery);
С точки зрения повторного использования функциональности, существует порог, после которого разделение является более вредным, чем что-либо еще. Убедитесь, что вы соблюдаете правильный баланс модульности и организации.