fn — это короткая ссылка на jQuery.prototype, потому можно писать:
jQuery.fn.plugin = function () {
// Here is my plugin
// this здесь ссылается на jquery-объект, от которого вызван метод
};
И данный плагин появится во всех уже созданных и тех, что создадутся сущностях. Добавляя свойства напрямую в объект мы реализуем статические свойства:
jQuery.plugin = function () {
// Here is my plugin
};
Таким образом, наилучший шаблон для небольших плагинов:
new function (document, $, undefined) {
var privateMethod = function () {
// private method, used for plugin
};
$.fn.myPlugin = function () {
};
// и, если нужен метод, не привязанный к dom-элементам:
$.myPlugin = function () {
};
}(document, jQuery);
А в твоём примере просто изменён порядок $.fn.plugin и $.plugin