Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
new.new function (document, $, undefined) {
var privateMethod = function () {
// private method, used for plugin
};
$.fn.myPlugin = function () {
};
// и, если нужен метод, не привязанный к dom-элементам:
$.myPlugin = function () {
};
}(document, jQuery);</script>
Если только для того, чтобы скобки лишние не ставить, то это явно abusing языковых конструкций. Плюс, проще, короче и понятнее написать так:
<source lang="javascript">
!function(){ console.log('hello world'); }();
Наилучший шаблон для небольших плагиновjQuery Plugin Boilerplate — полная версия с коментами, ниже сокращенная
(function($) {
$.fn.pluginName = function(method) {
var defaults = {
foo: 'bar'
}
var settings = {}
var methods = {
init : function(options) {
settings = $.extend({}, defaults, options)
return this.each(function() {
var
$element = $(this),
element = this;
// code goes here
});
},
foo_public_method: function() {
// code goes here
}
}
var helpers = {
foo_private_method: function() {
// code goes here
}
}
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error( 'Method "' + method + '" does not exist in pluginName plugin!');
}
}
})(jQuery);автор — John Resig, aka jeresig, известный гуру и евангелист Javascript в Mozilla Corporation(function(window, undefined) {
var document = window.document;
var jQuery = (function() {
var jQuery = function(selector, context, undefined) {
return new jQuery.fn.init(selector, context);
};
jQuery.fn = jQuery.prototype = {
constructor: jQuery,
init: function(selector, context, undefined) {
if (!selector) return this;
return typeof(selector) === 'string' ?
document.getElementById(selector) : selector;
}
};
jQuery.fn.init.prototype = jQuery.fn;
return jQuery;
})();
window.jQuery = window.$ = jQuery;
})(window);
// Plugin
(function($) {
$.fn.foo = function() {
console.log('bar');
}
})(jQuery);
// <div id="qwe">asd</div>
$('qwe').foo();
return typeof(selector) === 'string' ? document.getElementById(selector) : selector;
jQuery.fn.init init: function(selector, context, undefined) {
if (!selector) return this;
if(typeof(selector) === 'string') {
this[0] = document.getElementById(selector);
this.selector = selector;
this.context = context;
return this;
} else {
this.context = this[0] = selector;
return this;
}
}
Как устроен jQuery: изучаем исходники