Как знак $ в "jQuery(function($){...}") ссылается на jQuery?
Ниже написано, что знак $ относится к jQuery. Мне нужна помощь, чтобы понять, как?
jQuery(function($){
// Here `$` refers to jQuery
});
3 ответа
Когда вы передаете функцию в jQuery следующим образом:
jQuery(function() {
...
});
Это то же самое, что и использование обработчика jQuery "document ready":
jQuery(document).ready(function() {
...
});
однако аргумент, передаваемый этой функции, на самом деле сам является глобальным объектом jQuery - просто большинство таких обработчиков никогда не используют этот параметр. Следовательно, настоящая подпись такова:
jQuery(document).ready(function($) {
...
});
так, в рамках этой функции $
является локальным псевдонимом для глобального объекта jQuery. Имя переменной может быть чем угодно, но $
это популярный псевдоним для jQuery
и глобальный псевдоним по умолчанию, если вы не позвоните jQuery.noConflict()
,
Это описано более подробно в параграфе "Псевдоним пространства имен jQuery" на http://api.jquery.com/ready/
Эта функция является так называемой allonymous функцией, в которой jQuery запускает эту allonymous функцию с первым параметром this.
Так что просто для понимания он делает что-то вроде этого:
function jQuery(xx) {
xx(this);
}
Просто пример, чтобы показать вам, как это возможно
function externalLibrary(b) {
if(typeof b === 'function') {
b(externalLibrary);
}else {
// other stuff
}
}
var myFunc = function(aliasOfExternalLibrary) {
// here aliasOfExternalLibrary is a reference to externalLibrary
}
externalLibrary( myFunc );
jQuery делает то же самое (в одной более сложной системе)