#javascript #jquery #class
#javascript #jquery #класс
Вопрос:
Итак, мне было интересно, может ли кто-нибудь помочь мне понять, как работает «класс» jQuery. Из того, что я могу сказать, он работает как статический класс, подобный такому:
if(!$) { var $ = new function(){} }
Я думаю..
Теперь, что меня смущает, так это то, как вы можете вызывать метод как с такими аргументами, так и без них:
$("a").removeClass("test");
$.get('myhtmlpage.html', myCallBack);
Я предполагаю, что передача этого аргумента просто возвращает document.getElementById(argument);
Но как? Как этот аргумент передается в класс после такого факта? кроме того, это какой-то результат цепочки методов?
Любая информация, которая поможет мне понять, что происходит, была бы отличной! Спасибо.
Ответ №1:
Здесь я работаю с исходным кодом jQuery, так что вы тоже можете посмотреть на него.
$
Функция явно не определена, а вместо этого связана с jQuery
объектом:
window.$ = jQuery;
jQuery
Объект определяется следующим образом:
jQuery.fn = jQuery.prototype = {
constructor: jQuery,
init: function( selector, context, rootjQuery ) {
init: function( selector
Часть обрабатывает $('foo')
обращения.
Если параметры не заданы, используется другая функция:
get: function( num ) {
Комментарии:
1. Спасибо за это! Дополнительная информация была бы очень признательна!
Ответ №2:
Переменные в JavaScript могут содержать $. например, foo и $foo — это разные переменные. Естественно, $ является допустимым объектом.
Следующее, что стоит отметить, это то, что в JavaScript все является классом. Функция тоже является классом, поэтому у вашей функции тоже могут быть методы.
$ < — это функция с методами.
$(‘a’) <- это выполняет ту функцию, которая что-то делает, и снова возвращает $ .
$.get() <- это вызывает метод этой функции jQuery.
$(‘a’).get() <- это выполняет функцию с аргументом a, которая снова возвращает $, затем вы берете ее метод и выполняете его снова.
Когда вызывается $(‘a’), возвращается не тот же самый $, он будет содержать некоторую дополнительную информацию об используемом вами селекторе.
Мое последнее замечание заключается в том, что когда вы вызываете $(x); где x — функция, она используется как ярлык для регистрации обратного вызова, готового к использованию в документе.