jQuery: i vantaggi del metodo $.proxy()

Il rischio che corriamo spesso con le funzioni di callback di jQuery è quello di creare eccessivi annidamenti che complicano inutilmente il nostro codice. In JavaScript esistono i metodi call() ed apply() che ci consentono di modificare il contesto di esecuzione di un metodo o di una funzione. jQuery implementa $.proxy().

Ecco un esempio tipico di eccessivo annidamento:


var MyClass = function () { 
	this.setUpEvents = function () { 
		$( "a" ).click(function ( event ) { 
			console.log( $( event.target ) ); 
		}); 
	} 
}

Possiamo separare il codice eseguito nell'evento dal metodo setUpEvents() in questo modo:


var MyClass = function() {
	this.setUpEvents = function() {
		$( "a" ).click( $.proxy( this, "clickMethod" ) );
	}
	
	this.clickMethod = function( event ) {
		console.log( $( event.target ) );	
	}

};

Il metodo $.proxy() accetta come primo parametro l'oggetto che diventerà il contesto di esecuzione della funzione passata come secondo parametro. In questo caso la parola chiave this fa riferimento all'elemento a corrente. In questo modo tale elemento corrisponderà alla proprietà target dell'oggetto event usata nel metodo clickMethod().

I vantaggi di questo metodo sono principalmente l'indipendenza del codice da un determinato contesto e la maggiore semplicità nella struttura dello stesso.

Torna su