Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Programmering >> JavaScript Programmeren >> Content
Wat zijn sluitingen Goed voor in JavaScript ?
Als er een sluiting is gemaakt in JavaScript , kunt u lokale variabelen van een functie verwijzen , zelfs nadat de functie is beëindigd , met de waarden die ze hadden bij het sluiten van de functie . Wanneer u een functie gebruiken in een andere functie , gebruik " eval " binnen een andere functie of definieer een variabele in een functie zonder " var , " u een afsluiting te creëren. Veel programmeurs sluitingen te maken zonder het te beseffen door het definiëren van een anonieme functie binnen een functie . Sluitingen zijn nuttig wanneer u wilt variabelen doorgeven aan event handlers of AJAX callback functies en private variabelen en methoden in de JavaScript-objecten emuleren . Wees voorzichtig bij het maken van sluitingen , echter, omdat ze geheugen lekken kunnen veroorzaken in Microsoft Internet Explorer . Inzicht sluitingen

JavaScript en de meeste andere programmeertalen , zijn de lokale variabelen van een functie vernietigd nadat de functie eindigt . Echter , wanneer u een functie binnen een andere functie in JavaScript maken , de lokale variabelen van de buitenste functie worden zelfs behouden nadat het eindigt , omdat de variabelen kan worden verwezen door de innerlijke functie . Het onderstaande voorbeeld bevat een functie ' laureaat ' , dat een afsluiting ontstaat door een anonieme functie , waarin het terugkeert . We noemen dat de anonieme functie rechtstreeks van buiten zonder zelfs gaan door de ouder -functie :

functie prijswinnaar
( naam ) { var winnaar = " Je wint de hoofdprijs , " + naam ; var kondigen = function ( ) { alert ( winnaar ) ;} if ( Math.floor ( Math.random ( ) * 11 ) == 7 ) terug te kondigen ; terug null; }

if ( var sayit = prijswinnaar ( " Steve " ) ) sayit ( ) ;
parameters doorgeven aan event handlers

Een gebruik van sluitingen is om variabelen beschikbaar om event handlers maken . Neem het volgende voorbeeld waarin een afsluiting wordt gecreëerd door een anonieme functie gedefinieerd in " SetHandler . " De anonieme functie referenties een parameter van ' SetHandler . "Op het moment van de gebeurtenis branden, ook al is" SetHandler " klaar is de waarden van de variabelen, zoals de parameters , de conclusie van de functie worden bewaard voor de anonieme functie . Een aparte sluiting wordt gemaakt voor elke iteratie van de lus .

Functie SetHandler
( deur , prijs) { door.addEventListener ( " click" , function ( ) {alert ( " Prijs voor de deur " + deur + " is " + prijs) ;} , false) ; }

window.onload
= function ( ) { for ( var i = 1 ; i < = 3 ; i + + ) { SetHandler ( document.getElementById ( " deur" + i ) , prijs [ i ] ) ; } }
parameters doorgeven aan AJAX functies Terugbellen

Vergelijkbaar met het vorige voorbeeld , we kunnen parameters aan AJAX callback-functies met sluitingen . Als je een AJAX call waarin het verzoek variabele is globaal te maken, heb je de kans om een parameter doorgeven aan de callback functie omdat een enkele algemene aanvraag wordt gecreëerd geëlimineerd . Door het maken van het verzoek variabele lokale , kunt u een afsluiting te creëren en geven de callback functie toegang tot verzoek - specifieke gegevens . In het onderstaande voorbeeld maken we een afsluiting door het definiëren van de callback -functie die gebruik maakt van een variabele lokaal aan haar moedermaatschappij functie . Een aparte callback wordt gemaakt voor elk van de 10 " makeRequest " gesprekken

functie proces
( ) { voor . ( Var i = 0 ; i < 10 ; i + + ) { makeRequest ( i ) ; }

functie makeRequest (wat ) { var verzoek ; var useThis = lookup (die ) if ( window.XMLHttpRequest ) { aanvraag = new XMLHttpRequest ( ) ; } else if ( window.ActiveXObject ) { aanvraag = new ActiveXObject ( " Microisoft.XMLHTTP " ) ; } request.onreadystatechange = function ( ) { parse ( useThis ) ;} request.open ( " GET " , url ) ; request.send ( ) ; }
Prive variabelen en methoden in JavaScript

JavaScript , alle leden van een object zijn publiek , in tegenstelling tot sommige andere objectgeoriënteerde talen die het mogelijk maken voor prive- variabelen en methoden . Sluitingen toelaten om private methoden en variabelen in JavaScript emuleren . In het volgende voorbeeld , het object " geheimen " is gecreëerd en uitgevoerd bij de definitie . Als het wordt uitgevoerd , bevat het een anoniem object met twee methoden: "show" en " super ", die een parameter neemt . Zowel de variabele " secretCode " en de functie " supergeheime " is alleen toegankelijk via de twee methoden in de " geheimen " object . In feite , ze zijn particuliere leden van

var geheimen
= function ( ) { var secretCode = ( ( ( 1 + Math.random ( ) ) * 0x100000 ) | 0 ) " geheimen . " . ToString ( . 16 ) substring (3,5 ) ; var supergeheime = function ( hash ) { return gecodeerde ( hash ) ; }

terugkeer
{ tonen : function ( ) {alert ( secretCode ) ;} ,

super : functie ( hash ) { alert ( supergeheime ( hash ) ) ; } } } ( ) ;

Previous: Next:
  JavaScript Programmeren
·Wat is de Adobe ExtendScript T…
·Hoe je meerdere nummers gebrui…
·Hoe te verbergen een Redirect 
·Hoe maak je JavaScript te Scro…
·Hoe maak je een wachtwoord voo…
·Hoe activeer ik een webbrowser…
·Hoe maak JavaScripts 
·Hoe maak je een DIV verbergen …
·Hoe kan ik gebruiken iBox ? 
  Related Articles
Wat is VBA ? 
Wat zijn de functies van Visual Basic ? 
Wat is een Visual Basic DataGrid ? 
Wat is een Array in Visual Basic ? 
Wat is de Visual Basic IDE ? 
Wat is Visual Studio Express ? 
Hoe worden Arrays Initialized in Visual …
Wat is Visual Basic 6.0 ? 
Wat is OCX in Visual Basic ? 
  Programmering Articles
·Hoe te CPP compileren op een Mac 
·Hoe te XLS Met JavaScript 
·Hoe te Fonts in MFC Toon 
·Hoe de uren en minuten in VB6 Bereken 
·Hoe uw eigen computerprogramma's maken 
·Hoe maak je een DF Trainer verdienen met…
·Hoe maak je input een functie in VB 
·Problemen met geluid te creëren met Get…
·Hoe te importeren GTK Python 
Copyright © Computer Kennis http://www.nldit.com