“Conocimientos Programación>JavaScript Programación

¿Qué son los cierres Bueno en JavaScript

2013/5/5
¿ Cuando se crea un cierre en JavaScript, puede hacer referencia a las variables locales de una función , incluso después de la función ha terminado, con los valores que tenían al final de la función. Cuando se utiliza una función dentro de otra función , utilice " eval " dentro de otra función o definir una variable dentro de una función sin "var ", se crea un cierre. Muchos programadores crean cierres sin darse cuenta al definir una función anónima dentro de una función . Los cierres son útiles cuando se quiere pasar variables a controladores de eventos o funciones de devolución de llamada de AJAX y emular las variables y métodos privados en objetos JavaScript . Tenga cuidado al crear el cierre , sin embargo , debido a que pueden causar pérdidas de memoria en Microsoft Internet Explorer. Entender Cierres

JavaScript y la mayoría de otros lenguajes de programación , las variables locales de una función se destruyen después de que termine la función . Sin embargo , cuando se crea una función dentro de otra función en JavaScript, las variables locales de la función externa se conservan incluso después de que se termina porque las variables pueden hacer referencia a la función interna . El ejemplo siguiente contiene una función de " ganador " que crea un cierre a través de una función anónima , que vuelve . A eso le llamamos función anónima directamente desde el exterior sin tener que ir a través de la función principal :

ganador función ( nombre) { var ganador = " Usted gana el premio" + nombre ; var anunciar = function ( ) { alerta ( ganador) ;} if ( Math.floor ( Math.random () * 11 ) == 7 ) volver anunciar ; return null ;}

if ( var = sayit ganador ( "Steve ") ) sayit ();
pasar parámetros a controladores de eventos

Uno de los usos de los cierres es hacer que las variables disponibles para los controladores de eventos . Consideremos el siguiente ejemplo en el que el cierre se crea una función anónima se define en " SetHandler . " Las referencias a funciones anónimas un parámetro de " SetHandler . " En el momento se activa el evento , a pesar de que " SetHandler " ha terminado , los valores de sus variables , incluyendo sus parámetros , en la conclusión de la función se conservan para la función anónima . Un cierre por separado se crea para cada iteración del bucle.

SetHandler función ( puerta, premio) { door.addEventListener ( "click " , function () { alert (" Premio a la puerta " + puerta + "es" + premio) ;} , false) ;}

window.onload = function () {for (var i = 1 ; i < = 3 , i + + ) { SetHandler ( document.getElementById ( " puerta " + i ) , el premio [ i]) ;} }
pasar parámetros a funciones de devolución de llamada AJAX

similares al ejemplo anterior , podemos pasar parámetros a funciones de devolución de llamada de AJAX con cierres. Si realiza una llamada de AJAX en el que la variable de petición es global , se ha eliminado la posibilidad de pasar un parámetro a la función de devolución de llamada porque se crea una única solicitud global. Al hacer la solicitud variable local , puede crear un cierre y dar el acceso a la función de devolución de llamada de datos de solicitud específicos . En el siguiente ejemplo , se crea un cierre por definir la función de devolución de llamada que utiliza una variable local a su función principal. Un callback separado se crea para cada una de las 10 llamadas " makeRequest "
proceso

función () {for . (Var i = 0 ; i < 10 ; i + + ) { makeRequest ( i ) ;}

makeRequest función (que ) { var solicitud; usethis var = lookup (que ), si ( window.XMLHttpRequest ) { request = new XMLHttpRequest (); } else if ( window.ActiveXObject ) { request = new ActiveXObject ( " Microisoft.XMLHTTP " ) = function ( ) { parse ( usethis ) } request.onreadystatechange ;} request.open (" GET " , url ) ; request.send () ;}
privado Variables y Métodos en JavaScript

JavaScript , todos los miembros de un objeto son públicas, a diferencia de otros lenguajes orientados a objetos que permiten a las variables y métodos privados . Cierres le permiten emular los métodos privados y variables en JavaScript . En el siguiente ejemplo, el objeto " secretos " se ha creado y ejecutado sobre la definición . Cuando se ejecuta, que contiene un objeto anónimo con dos métodos: "show" y "super ", que toma un parámetro . Tanto el " secretCode " variable y la función " supersecreto " Sólo se puede acceder a través de los dos métodos en el objeto " secretos " . En efecto , son miembros privados de

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

JavaScript Programación
Cómo subir películas Flash
Cómo cambiar el marcador en un API de Google Maps
Variables de Adobe Ciclos de Vida
Cómo hacer jabón piedras preciosas
Cómo conseguir un atributo de JavaScript
Cómo convertir números a las palabras en Javascript
Cómo pasar una variable de JavaScript
JavaScript código de validación para los campos de juego
Conocimientos Informáticos © http://www.ordenador.online