J'apprends jQuery en essayant de comprendre le code des autres. J'ai couru dans ceci:
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
}
D'après ce que j'ai compris, $
fait référence à l'objet jQuery. Alors pourquoi mettre $
avec $self
et $body
? Et self
est-il identique à $self
?
$ self a peu à voir avec $, qui est un alias pour jQuery dans ce cas. Certaines personnes préfèrent mettre un signe dollar avec la variable pour faire la distinction entre les objets vars ordinaires et les objets jQuery.
exemple:
var self = 'some string';
var $self = 'another string';
Celles-ci sont déclarées comme deux variables différentes. C'est comme mettre un trait de soulignement avant des variables privées.
Un modèle un peu populaire est:
var foo = 'some string';
var $foo = $('.foo');
Ainsi, vous savez que $ foo est un objet jQuery mis en cache plus tard dans le code.
C'est pur JavaScript.
$
n'a rien de spécial. C'est juste un caractère qui peut être utilisé dans les noms de variables.
var $ = 1;
var $$ = 2;
alert($ + $$);
jQuery assigne simplement sa fonction principale à une variable appelée $
. Le code que vous avez affecte this
à une variable locale appelée self
et les résultats de l'appel de jQuery avec this
en tant qu'argument d'une variable globale appelée $self
.
C'est moche, sale, déroutant, mais $
, self
et $self
sont des variables différentes qui portent des noms similaires.
Non, ce n'est certainement pas. C'est juste un autre nom de variable. La $()
dont vous parlez est en fait jQuery core function . Le $self
n'est qu'une variable. Vous pouvez même le renommer en foo
si vous voulez, cela ne change rien. Le $
(et _
) sont des caractères légaux dans un identifiant Javascript.
Pourquoi cela est-il souvent dû à une convention de code ou pour éviter les conflits avec des mots clés inversés? Je l'utilise souvent pour $this
comme suit:
var $this = $(this);
self et $ self ne sont pas identiques. Le premier est l'objet désigné par "this" et le dernier est un objet jQuery dont le "scope" est l'objet désigné par "this". De même, $ body n'est pas l'élément DOM du corps, mais l'objet jQuery dont la portée est l'élément body.
Le dollarign en tant que préfixe dans le nom var est un usage du concept notation hongroise .