РЕДАКТИРОВАТЬ: После перечитывания я не думаю, что это отвечает на ваш вопрос, но это может быть полезно для чьего-то лучшего понимания того, как работает 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.
Уф, это был полный рот. Я надеюсь, что это имеет смысл, и если у кого-то есть какие-то исправления в случае, если я дезинформировал в какой-либо части этого длинного объяснения, пожалуйста, дайте мне знать.