2012-02-25 5 views
3

Я пытаюсь написать «хорошую» структуру плагина jQuery. Я пытаюсь следовать «лучшим практикам» от jQuery.com и других.Лучшая конструкция плагина jQuery?

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

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

Спасибо!

(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); 
+0

* «Я немного запутался в прототипе». * С чем вы смущены? Единственное место, где вы его используете, вы используете его только как средство доступа к методу '.slice(). Если вы следуете «лучшим практикам», то есть ли какая-то причина, по которой вы думаете, что ваш код будет ужасным? –

+0

О, нет, я просто говорю о структуре кода! Недавно я обнаружил «прототип», поэтому мой вопрос в том, должен ли я по-прежнему использовать «метод вызова логики $ .fn.tooltip ...» или вместо этого использовать прототипы? – macpie

+0

Если это вам поможет http://heera.it/patterns-in-jquery-plugin-writin –

ответ

1

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

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

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

Смежные вопросы