2009-12-16 16 views
76

Sto imparando jQuery cercando di capire il codice di altre persone. Mi sono imbattuto in questo:sintassi variabile 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 

} 

mia comprensione è che $ si riferisce all'oggetto jQuery. Quindi, perché mettere $ con $self e $body? Ed è self lo stesso di $self?

risposta

195

$ self ha poco a che fare con $, che è un alias per jQuery in questo caso. Alcune persone preferiscono mettere un simbolo del dollaro insieme alla variabile per fare una distinzione tra vars regolari e oggetti jQuery.

esempio:

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

Questi sono dichiarati come due variabili diverse. È come mettere un trattino basso prima delle variabili private.

Un modello un po 'popolare è:

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

In questo modo, si sa $ foo è un oggetto jQuery nella cache più avanti nel codice.

+8

Molto chiaro. Apprezzo che tu spieghi perché qualcuno potrebbe usare la convenzione $ var. – dnagirl

+0

Come gestisci la variabile che inizia con $ per la variabile jquery e jslint? –

9

No, non lo è certamente. È solo un altro nome di variabile. Lo $() di cui stai parlando è in realtà lo jQuery core function. Il $self è solo una variabile. Puoi anche rinominarlo in foo se vuoi, questo non cambia le cose. Lo $ (e _) sono caratteri legali in un identificatore Javascript.

Perché questo è fatto, spesso è solo una convenzione di codice o evitare scontri con parole chiave invertite. Io uso spesso per $this come segue:

var $this = $(this); 
7

sé e $ sé non sono la stessa cosa. Il primo è l'oggetto puntato da "this" e il secondo un oggetto jQuery il cui "scope" è l'oggetto puntato da "this". Allo stesso modo, $ body non è l'elemento DOM body ma l'oggetto jQuery il cui ambito è l'elemento body.

26

Questo è puro JavaScript.

Non c'è niente di speciale su $. È solo un personaggio che può essere usato nei nomi di variabili.

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

jQuery assegna semplicemente la sua funzione principale di una variabile denominata $. Il codice assegnato a this a una variabile locale denominata self e ai risultati della chiamata di jQuery a this come argomento a una variabile globale denominata $self.

È brutto, sporco, confuso, ma $, self e $self sono tutte variabili diverse che capita di avere nomi simili.

+0

I gusti variano, ma non lo trovo affatto brutto. Il simbolo del dollaro è stato utilizzato per indicare $ STRINGS e altre variabili speciali per un lungo periodo. Deciderà sicuramente di adottare questa convenzione. –

2

Il simbolo di dollari come prefisso nel nome var è un utilizzo dal concetto di hungarian notation.