Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Aké sú Uzávery dobré pre v JavaScriptu ?

Ak uzáver vytvorený v jazyku JavaScript , môžete odkazovať na lokálne premenné funkcie aj po funkcii skončil , s hodnotami , ktoré mali na konci funkcie . Vždy , keď použijete funkciu vnútri inej funkcie , použite " eval " vnútri inej funkcie , alebo definovať premennú vnútri funkcie bez " var " , môžete vytvoriť uzavretie . Veľa programátorov vytvoriť uzávery , bez toho aby si to uvedomovali definovaním anonymné funkcie v rámci funkcie . Uzávery sú užitočné , keď chcete odovzdať premenné do obsluhy udalostí alebo Callback funkcie AJAX a napodobňovať súkromné ​​premenné a metódy v objektoch JavaScript . Pri vytváraní uzávery , ale buďte opatrní , pretože môže dôjsť k pretečeniu pamäte v programe Microsoft Internet Explorer . Pochopenie uzávery

JavaScript a väčšina iných programovacích jazykov , miestne premenné a funkcie sú zničené po tom , čo funkcia končí . Avšak , keď vytvoríte funkciu vnútri inej funkcie v JavaScriptu , miestne premenné vonkajšie funkcie sú zachované aj po ukončí , pretože premenné môžu byť odkazované vnútorné funkcie . Nižšie uvedený príklad obsahuje funkciu " výherca " , ktorý vytvára uzáver prostredníctvom anonymnej funkcie , ktoré vracajú . Hovoríme, že anonymné funkcie priamo z vonku , bez dokonca ísť cez materské funkcie :

funkcie výherca ( meno ) { víťaz var = " Vyhrali ste cenu , " + meno ; var oznámiť = function ( ) { alert ( víťaz ) ; } ; if ( Math.floor ( Math.random ( ) * 11 ) == 7 ) vrátiť oznámiť , return null ; }

if ( var Sayit = výherca ( " Steve " ) ) Sayit ( ) ;
Odovzdávanie parametrov do obslužnej rutiny udalostí

použitie uzáverov je , aby sa premenné k dispozícii obsluhy udalostí . Zoberme si nasledujúci príklad , v ktorom je uzáver vytvorený anonymné funkcie definované v " SetHandler . " Anonymné funkcie odkazuje na parameter " SetHandler . " V okamihu , Udalosť , aj keď " SetHandler " dokončil , hodnoty jeho premenných , vrátane jeho parametrov , na záver funkcie sú zachované pre anonymné funkcie . Samostatný uzáver je vytvorený pre každú iteráciu v slučke .

Funkcia SetHandler ( dvere , cena ) { door.addEventListener ( " click " , function ( ) { alert ( " cena za dvere " + dvere + " je " + cena ) ; } , false ) ; }

window.onload = function ( ) { for ( var i = 1 ; i < = 3 ; i + + ) { SetHandler ( document.getElementById ( " door " + i ) , cena [ i ] ) ; } }
Odovzdávanie parametrov AJAX funkcia spätného volania

Podobne ako v predchádzajúcom príklade , môžeme odovzdať parametre callback funkcie AJAX s uzávermi . Ak vykonáte volanie AJAX , v ktorom je premenná žiadosť je globálna , ste eliminuje možnosť odovzdať parameter pre funkciu spätného volania , pretože jeden globálny požiadavka je vytvorený . Tým , že žiadosť premenné lokálne , môžete vytvoriť uzáver a dať funkciu spätného volania prístup k dátam vyžiadanie špecifické. V nižšie uvedenom príklade , vytvoríme uzavretie definovaním funkcie spätného volania , ktorá používa premenné lokálne svojej materskej funkcie . Samostatný spätné volanie je vytvorený pre každý z 10 " vytvoritZadost " volanie klipart

funkciu postup ( ) { for . ( Var i = 0 ; i < 10 ; i + + ) { vytvoritZadost ( i ) ; } klipart

funkcie vytvoritZadost ( ktoré ) { var žiadosť ; var useThis = vyhľadávania ( ktoré ) ; if ( window.XMLHttpRequest ) { request = new XMLHttpRequest ( ) ; } else if ( window.ActiveXObject ) { request = new ActiveXObject ( " Microisoft.XMLHTTP " ) ; } request.onreadystatechange = function ( ) { parse ( useThis ) ; } request.open ( " GET " , url ) ; request.send ( ) ; }
súkromia premenné a metódy v JavaScripte

JavaScript , všetci členovia objektu sú verejné , na rozdiel od niektorých iných objektovo orientovaných jazykoch , ktoré umožňujú súkromné ​​premenné a metódy . Uzávery umožňujú emulovať súkromné ​​metódy a premenné v JavaScripte . V nasledujúcom príklade je objekt " tajomstvo " je vytvorený a spustený na definíciu . Po spustení obsahuje anonymný objekt s dvoma spôsobmi : " show " a " super " , ktorá preberá parameter . Obe premenné " secretCode " a funkcia " superSecret " možno pristupovať len pomocou týchto dvoch metód v " tajomstve " objekt . V skutočnosti , oni sú súkromné ​​členmi

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

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené