2009-12-16 10 views
76

Estoy aprendiendo jQuery tratando de entender el código de otras personas. Me encontré con esto:sintaxis de la variable 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 

} 

Mi entendimiento es que $ se refiere al objeto jQuery. Entonces, ¿por qué poner $ con $self y $body? ¿Y es self lo mismo que $self?

Respuesta

195

$ auto tiene poco que ver con $, que es un alias para jQuery en este caso. Algunas personas prefieren poner un signo de dólar junto con la variable para hacer una distinción entre vars regulares y objetos jQuery.

ejemplo:

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

se haya declarado que dos variables diferentes. Es como poner guiones bajos antes de las variables privadas.

Un patrón algo popular es:

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

De esta manera, usted sabe $ foo es un objeto jQuery en caché más adelante en el código.

+8

Muy claro. Le agradezco que explique por qué alguien podría usar la convención $ var. – dnagirl

+0

¿Cómo se maneja la variable que comienza con $ para la variable jquery y jslint? –

9

No, ciertamente no lo es. Es solo otro nombre de variable. El $() del que está hablando es en realidad el jQuery core function. El $self es solo una variable. Incluso puede cambiar el nombre a foo si lo desea, esto no cambia las cosas. $ (y _) son caracteres legales en un identificador de Javascript.

Por qué esto se hace, a menudo es solo una convención de código o para evitar conflictos con palabras clave revertidas. A menudo utilizo para $this de la siguiente manera:

var $this = $(this); 
7

auto y auto $ no son los mismos. El primero es el objeto al que apunta "este" y el segundo un objeto jQuery cuyo "alcance" es el objeto señalado por "este". De forma similar, $ body no es el elemento DOM del cuerpo sino el objeto jQuery cuyo ámbito es el elemento body.

26

Esto es JavaScript puro.

No hay nada especial sobre $. Es solo un personaje que puede usarse en nombres de variables.

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

jQuery simplemente asigna la función básica de una variable llamada $. El código que ha asignado this a una variable local llamada self y los resultados de llamar a jQuery con this como argumento a una variable global llamada $self.

Es feo, sucio, confuso, pero $, self y $self son todas variables diferentes que pasan a tener nombres similares.

+0

Los gustos varían, pero no me parece nada desagradable. El signo de dólar se ha usado para denotar $ STRINGS y otras variables especiales durante mucho tiempo. Definitivamente va a adoptar esta convención. –