| maison  | Hardware  | réseaux  | programmation  | Logiciel  | Dépannage  | systèmes |  
programmation  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    Connaissances Informatiques >> programmation >> Programmation JavaScript >> Content
    Quels sont les fermetures Bon pour en JavaScript
    ? Quand une fermeture est créée en JavaScript, vous pouvez utiliser des variables locales d'une fonction , même après que la fonction a terminé , avec les valeurs qu'ils avaient à la fin de la fonction. Chaque fois que vous utilisez une fonction dans une autre fonction , utilisez " eval" dans une autre fonction ou définir une variable dans une fonction sans " var ", vous créez une fermeture. De nombreux programmeurs de créer des fermetures sans s'en rendre compte en définissant une fonction anonyme dans une fonction. Les fermetures sont utiles lorsque vous souhaitez passer des variables aux gestionnaires d'événements ou de fonctions callback AJAX et d'émuler des variables privées et des méthodes dans les objets JavaScript . Faites preuve de prudence lors de la création fermetures , cependant, car ils peuvent provoquer des fuites de mémoire dans Microsoft Internet Explorer. Comprendre les fermetures

    JavaScript et la plupart des autres langages de programmation , les variables locales d'une fonction sont détruits après la fin de la fonction. Toutefois, lorsque vous créez une fonction dans une autre fonction en JavaScript, les variables locales de la fonction externe sont conservés même après qu'il se termine parce que les variables peuvent être référencées par la fonction interne . L'exemple ci-dessous contient une fonction " lauréat " qui crée une fermeture par une fonction anonyme , dont il retourne . Nous appelons cette fonction anonyme directement de l'extérieur , sans même passer par la fonction de parent :
    fonction lauréat

    (nom) {var gagnant = "Vous gagnez le prix ," + nom ; var annoncent = function () { alerte (vainqueur );} if ( Math.floor ( Math.random ( ) * 11 ) == 7 ) Retour annoncer ; return null ; }

    if ( var sayit = lauréat ( "Steve" ) ) sayit ();
    passer des paramètres à des gestionnaires d'événements

    Une utilisation de fermetures est de rendre variables disponibles aux gestionnaires d'événements . Prenons l'exemple suivant dans lequel une fermeture est créée par une fonction anonyme définie dans " SetHandler . " Les références à des fonctions anonymes un paramètre de " SetHandler . " Au point les feux de l'événement, même si " SetHandler " a fini , les valeurs de ses variables, y compris ses paramètres , à la conclusion de la fonction sont conservés pour la fonction anonyme . Une fermeture distincte est créée pour chaque itération dans la boucle.
    Fonction SetHandler

    ( porte, prix ) { door.addEventListener ( "click", function () {alert (" Prix de la porte " + porte + "est" + prix) ;} , false); }

    window.onload = function () { for (var i = 1; i <= 3; i + +) { SetHandler ( document.getElementById ( " porte " + i) , le prix [i]) ;}}
    passer des paramètres à AJAX fonctions de rappel

    similaires à l'exemple précédent , nous pouvons passer des paramètres à des fonctions callback AJAX avec des fermetures . Si vous effectuez un appel AJAX dans lequel la variable de requête est global, vous avez éliminé la possibilité de passer un paramètre à la fonction de rappel , car une seule demande globale est créée . En faisant la demande variable locale , vous pouvez créer une fermeture et donner l'accès à la fonction de rappel pour les données spécifiques à la demande . Dans l'exemple ci-dessous, nous créons une fermeture en définissant la fonction de rappel qui utilise une variable locale à sa fonction de parent. Un rappel distincte est créée pour chacun des 10 appels " de makeRequest "
    processus de fonction

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

    ( qui ) { var demande; var usethis = recherche ( qui ) ; 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 ();}
    privé
    Variables et méthodes en JavaScript

    JavaScript, tous les membres d'un objet sont publiques , contrairement à d'autres langages orientés objet qui permettent de variables privées et les méthodes. Fermetures vous permettent d'émuler les méthodes et les variables privées en JavaScript. Dans l'exemple suivant, l'objet " secrets " est créé et exécuté sur la définition . Lorsqu'il est exécuté, il contient un objet anonyme avec deux méthodes : «spectacle» et «super », qui prend un paramètre . Tant le « secretCode " variable et la fonction " SuperSecret " ne sont accessibles que par les deux méthodes dans l'objet " secrets " . En effet , ils sont membres privés de

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

    Previous :

    next :
      articles connexes
    ·Comment faire pour supprimer un espace à partir d'une …
    ·Pourquoi est- Script Ralentir Mon ordinateur vers le ba…
    ·Comment calculer un billet de baseball en JavaScript 
    ·JavaScript: redirection vers la page 
    ·Comment faire pour activer Interlettrage de Cufon 
    ·Comment mettre à jour les variables de session 
    ·Comment mettre en évidence une colonne en JavaScript 
    ·Comment faire pour supprimer une barre d'adresse avec J…
    ·Comment vérifier un site Web pour un Bug JavaScript 
    ·Comment utiliser JavaScript Developer 
      articles en vedette
    ·Comment désactiver un avertissement sur ​​l'écran en …
    ·Comment faire pour appeler des routines de l'Assemblée…
    ·Comment faire pour créer des gestionnaires d'événeme…
    ·Comment créer un dossier approuvé 
    ·Comment obtenir le nom du script en VBS 
    ·Comment savoir si un site Web est basé sur Java 
    ·Comment écrire les fonctions de chaîne en Python 
    ·Comment copier NotesRichTextItem comme un Variant 
    ·Comment charger certificats à partir de Windows Keysto…
    ·Comment compiler Java sous Notepad 
    Copyright © Connaissances Informatiques http://fr.wingwit.com