Лучшая структура плагинов JQuery? - PullRequest
4 голосов
/ 25 февраля 2012

Я пытаюсь написать хорошую структуру jQuery Plugin. Я пытаюсь следовать "лучшим практикам" от jQuery.com и других.

Но я немного растерялся из-за прототипа.

Должен ли я использовать это или нет? И фактическая структура выглядит хорошо или ужасно?

Спасибо!

(function( $ ){
    var defaults = { /* ... */ },
    publicMethods = {
        add: function(options){
            var $this = $(this);
            // ...
            return $this;
        }
    },
    privateMethods = {
        init: function(options) {
            var $this = $(this);
            return $this;
        },
        click: function() {
            //...
        }
    };
    $.fn.tooltip = function(method) {
        var args = arguments;

        $(this).each(function() {
            if ( publicMethods[method] ) {
                return publicMethods[ method ].apply( this, Array.prototype.slice.call( args, 1 ));
            } else if ( typeof method === 'object' || ! method ) {
                return privateMethods.init.apply( this, args );
            } else {
                $.error( 'Method ' +  method + ' does not exist on jQuery.tooltip' );
            }   
        });
    };
})( jQuery );

1 Ответ

1 голос
/ 25 февраля 2012

Что касается использования .prototype функции tooltip, это было бы полезно, только если функция всплывающей подсказки будет вызываться в качестве конструктора.

Как правило, как плагин jQuery, вы заинтересованы только в использовании объекта, созданного из конструктора jQuery, а не в создании собственных объектов из функции плагина.

Может быть повод использовать конструктор где-то внутри вашего кода плагина, но обычно это не будет сама функция плагина.

...