syntaxis van jquery-variabele

Ik leer jQuery door te proberen de code van anderen te begrijpen. Ik kwam dit tegen:

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
}

Ik heb begrepen dat $verwijst naar het jQuery-object. Dus waarom zet je $bij $selfen $body? En is selfhetzelfde als $self?


Antwoord 1, autoriteit 100%

$selfheeft weinig te maken met $, wat in dit geval een alias is voor jQuery. Sommige mensen geven er de voorkeur aan om een dollarteken samen met de variabele te plaatsen om onderscheid te maken tussen gewone vars en jQuery-objecten.

voorbeeld:

var self = 'some string';
var $self = 'another string';

Deze worden gedeclareerd als twee verschillende variabelen. Het is alsof je een onderstrepingsteken voor privévariabelen plaatst.

Een enigszins populair patroon is:

var foo = 'some string';
var $foo = $('.foo');

Op die manier weet je dat $foo een jQuery-object in de cache is verderop in de code.


Antwoord 2, autoriteit 12%

Dit is puur JavaScript.

Er is niets bijzonders aan $. Het is slechts een teken dat in namen van variabelen kan worden gebruikt.

var $ = 1;
var $$ = 2;
alert($ + $$);

jQuery wijst zijn kernfunctie gewoon toe aan een variabele met de naam $. De code die je hebt wijst thistoe aan een lokale variabele genaamd selfen de resultaten van het aanroepen van jQuery met thisals argument aan een globale variabele genaamd $self.

Het is lelijk, vies, verwarrend, maar $, selfen $selfzijn allemaal verschillende variabelen die toevallig dezelfde namen hebben.


Antwoord 3, autoriteit 4%

Nee, dat is het zeker niet. Het is gewoon een andere variabelenaam. De $()waar je het over hebt is eigenlijk de jQuery kernfunctie. De $selfis slechts een variabele. Je kunt het zelfs hernoemen naar fooals je wilt, dit verandert niets. De $(en _) zijn juridische tekens in een Javascript-ID.

Waarom dit zo wordt gedaan, is vaak slechts een codeconventie of om botsingen met omgekeerde zoekwoorden te voorkomen. Ik gebruik het vaak voor $thisals volgt:

var $this = $(this);

Antwoord 4, autoriteit 3%

self en $self zijn niet hetzelfde. De eerste is het object waarnaar wordt verwezen door “this” en de laatste een jQuery-object waarvan de “scope” het object is waarnaar wordt verwezen door “this”. Op dezelfde manier is $body niet het body DOM-element, maar het jQuery-object waarvan het bereik het body-element is.


Antwoord 5

Het dollarteken als voorvoegsel in de var-naam is een gebruik van het concept van de hongaarse notatie.

Other episodes