Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> Programmazione Javascript >> .

Quali sono chiusure Per in JavaScript ?

Quando una chiusura viene creato in JavaScript, è possibile fare riferimento a variabili locali di una funzione , anche dopo la funzione si è concluso, con i valori che avevano al termine della funzione . Ogni volta che si utilizza una funzione all'interno di un'altra funzione , utilizzare " eval " all'interno di un'altra funzione o definire una variabile all'interno di una funzione senza "var ", si crea una chiusura . Molti programmatori di creare chiusure senza rendersene conto , definendo una funzione anonima all'interno di una funzione . Le chiusure sono utili quando si desidera passare variabili per i gestori di eventi o funzioni di callback AJAX e di emulare le variabili e metodi di oggetti JavaScript privati ​​. Usare cautela quando si creano chiusure , però, perché possono causare perdite di memoria in Microsoft Internet Explorer . Comprendere Chiusure

Javascript e molti altri linguaggi di programmazione , le variabili locali di una funzione vengono distrutte al termine della funzione. Tuttavia, quando si crea una funzione all'interno di un'altra funzione in JavaScript , le variabili locali della funzione esterna si conservano anche dopo che termina perché le variabili possono essere referenziate dalla funzione interna . L'esempio seguente contiene una funzione di " vincitore " che crea una chiusura attraverso una funzione anonima , che restituisce . Chiediamo che la funzione anonima direttamente dall'esterno senza nemmeno passare attraverso la funzione di genitore :

funzione vincitore ( nome ) {var vincitore = " Hai vinto il premio , " + nome ; var annunciare = function ( ) { alert (vincitore );} if ( Math.floor ( Math.random ( ) * 11) == 7 ) return annunciare ; restituire null ; }

if ( var = sayit Nobel ( " Steve " ) ) sayit ();
passaggio di parametri ai gestori di eventi

Un uso di chiusure è quello di rendere disponibili le variabili a gestori di eventi . Si consideri il seguente esempio in cui la chiusura è creato da una funzione anonima definita nel " SetHandler . " I riferimenti funzione anonima di un parametro di " SetHandler . " Al punto viene generato l'evento , anche se " SetHandler " ha finito di , i valori delle sue variabili , tra cui i suoi parametri , a conclusione della funzione vengono conservate per la funzione anonima . Una chiusura separato viene creato per ogni iterazione del ciclo.

Funzione SetHandler ( porta , premio) { door.addEventListener ( "click" , function () {alert (" Premio per la porta" + porta + "è" + premio );} , false) ; }

window.onload = function () { for (var i = 1; i < = 3; i + + ) { SetHandler ( document.getElementById ( "porta" + i) , premio [ i] );} }
passaggio di parametri a funzioni di callback AJAX

simili all'esempio precedente , siamo in grado di passare parametri a funzioni di callback AJAX con chiusure . Se si effettua una chiamata AJAX in cui la variabile richiesta è globale , hai eliminato la possibilità di passare un parametro alla funzione di callback , perché una sola richiesta globale è creato . Presentando la richiesta variabile locale , è possibile creare una chiusura e di dare la funzione di callback accesso ai dati di richiesta- specifici. Nel seguente esempio , creiamo una chiusura definendo la funzione di callback che utilizza una variabile locale alla sua funzione principale. Un callback viene creata per ciascuna delle chiamate 10 " makeRequest "
processo

funzione ( ) {for . ( Var i = 0; i < 10; i + + ) { makeRequest ( i); }

funzione makeRequest (che ) {var richiesta ; var usethis = lookup (che ), se ( window.XMLHttpRequest ) { richiesta = new XMLHttpRequest (); } else if ( window.ActiveXObject ) { richiesta = new ActiveXObject ( " Microisoft.XMLHTTP ");} request.onreadystatechange = function () { parse ( usethis );} request.open ( " GET " , url ) ; request.send (); }
privato variabili e Metodi JavaScript

JavaScript , tutti i membri di un oggetto sono pubbliche , a differenza di altri linguaggi orientati agli oggetti che permettono di variabili e metodi privati ​​. Chiusure consentono di emulare i metodi privati ​​e le variabili in JavaScript . Nell'esempio seguente , l'oggetto " segreti " è creato ed eseguito una definizione . Quando viene eseguito, esso contiene un oggetto anonimo con due metodi : "show" e "super ", che prende un parametro . Sia la variabile " secretCode " e la funzione " supersegreta " sono accessibili solo attraverso i due metodi nell'oggetto " segreti " . In effetti, essi sono membri privati ​​di

var segreti = function () {var secretCode = ( ( ( 1 + Math.random ( ) ) * 0x100000 )

 

Programmazione © www.354353.com