Синтаксис переменной jquery
Я изучаю jQuery, пытаясь понять код других людей. Я столкнулся с этим:
jQuery.fn.myFunc = function(options, callback) {
//stuff
jQuery(this)[settings.event](function(e) {
var self = this,
$self = jQuery( this ),
$body = jQuery( "body" );
//etc.
}
//more stuff
}
Я понимаю, что $
относится к объекту jQuery. Итак, зачем ставить $
с помощью $self
и $body
? И self
совпадает с $self
?
Ответы
Ответ 1
$self имеет мало общего с $, который в этом случае является псевдонимом для jQuery. Некоторые люди предпочитают помещать знак доллара вместе с переменной, чтобы провести различие между регулярными vars и объектами jQuery.
Пример:
var self = 'some string';
var $self = 'another string';
Они объявляются как две разные переменные. Это похоже на выражение подчеркивания перед частными переменными.
Несколько популярный шаблон:
var foo = 'some string';
var $foo = $('.foo');
Таким образом, вы знаете, что $foo - это кешированный объект jQuery позже в коде.
Ответ 2
Это чистый JavaScript.
В $
нет ничего особенного. Это просто символ, который может использоваться в именах переменных.
var $ = 1;
var $$ = 2;
alert($ + $$);
jQuery просто назначает его основной функции переменной с именем $
. Код, который вы присваиваете this
локальной переменной с именем self
и результаты вызова jQuery с this
в качестве аргумента глобальной переменной с именем $self
.
Это уродливое, грязное, запутанное, но $
, self
и $self
- все разные переменные, которые имеют похожие имена.
Ответ 3
Нет, конечно, нет. Это просто другое имя переменной. $()
, о котором вы говорите, на самом деле является основной функцией jQuery. $self
- это просто переменная. Вы даже можете переименовать его в foo
, если хотите, это не изменит ситуацию. $
(и _
) являются юридическими символами в Javascript-идентификаторе.
Почему это делается так часто бывает только в некотором кодексе или во избежание столкновений с отмененными ключевыми словами. Я часто использую его для $this
следующим образом:
var $this = $(this);
Ответ 4
self и $self не совпадают. Первый объект, на который указывает "this", и последний объект jQuery, чей "scope" - это объект, на который указывает "this". Точно так же $body не является элементом DOM тела, а объектом jQuery, объем которого является элементом body.
Ответ 5
Ценовой знак в качестве префикса в имени var является использованием концепции венгерской нотации.