Ответ 1
РЕДАКТИРОВАТЬ: После повторного чтения я не думаю, что это отвечает на ваш вопрос, но может быть полезно, чтобы кто-то лучше понял, как работает jQuery, поэтому я оставляю его.
Что происходит, так это то, что jQuery()
определяется как jQuery.fn.init()
, что является еще одним способом сказать jQuery.prototype.init()
, который является селекторной функцией! Это означает, что никто не будет называть jQuery.fn.init()
или jQuery.init()
, потому что jQuery()
IS .init()
!
Что?
Посмотрите на фрагмент кода, о котором вы говорите:
// Define a local copy of jQuery
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context );
},
В комментариях говорится только то, что я сказал, но более кратко. Но это только локальная копия jQuery... однако, если вы перейдете к строке 908 (версии 1.4.4) в конце функции самоисполнения, вы увидите:
// Expose jQuery to the global object
return (window.jQuery = window.$ = jQuery);
})();
... что означает, что этот локальный jQuery
становится глобальным jQuery
. Так? Итак... этот локальный jQuery
был фактически jQuery.fn.init()
прав? Итак, что такое init()
? Если вы посмотрите строки 100 на 208, вы увидите, что это метод выбора. Какой метод выбора? Это тот метод, который вы используете все время для поиска тегов, идентификаторов, классов... $('#id')
, jQuery('.class')
, $('ul li a')
... функция селектора!
Таким образом, никто никогда не назвал бы jQuery.init('div')
, потому что после этой присваивания это была подробная версия jQuery('div')
. И помните, что jQuery.fn
в точности совпадает с выражением jQuery.prototype
, так что все, что делает эта часть, это назначение .init()
как метода прототипа объекта jQuery
. И.Е. плагин jQuery.