Programação  
 
Conhecimento computador >> Programação >> JavaScript Programação >> 
Quais são Closures Bom para em JavaScript
? Quando um fechamento é criado em JavaScript , você pode referenciar variáveis ​​locais de uma função , mesmo depois que a função terminou , com os valores que tinham no final da função. Sempre que você usar uma função dentro de outra função , use " eval " dentro de outra função ou definir uma variável dentro de uma função sem " var ", você cria um encerramento. Muitos programadores criar fechamentos sem perceber pela definição de uma função anônima dentro de uma função . Closures são úteis quando você quer passar variáveis ​​para manipuladores de eventos ou funções de retorno de chamada de AJAX e emular variáveis ​​privadas e métodos em objetos JavaScript . Tenha cuidado ao criar fechamentos , no entanto, pois eles podem causar vazamentos de memória no Microsoft Internet Explorer. Compreender Closures

JavaScript ea maioria das outras linguagens de programação , as variáveis ​​locais de uma função são destruídos após a função termina. No entanto, quando você criar uma função dentro de outra função em JavaScript, as variáveis ​​locais da função exterior são preservados mesmo depois que ele termina , porque as variáveis ​​podem ser referenciados pela função interna . O exemplo abaixo contém uma função " premiado " que cria um fecho através de uma função anônima , o que ele retorna . Chamamos isso de função anônima directamente do exterior , mesmo sem passar pela função pai :

função premiado (nome ) { var vencedor = " Você ganha o prêmio, " + nome; var anunciar = function () { alert ( vencedor );} ; if ( Math.floor ( Math.random () * 11) == 7) voltar anunciar ; return null; }

if ( var SayIt = premiado ( " Steve " ) ) SayIt ();
Passando parâmetros para manipuladores de eventos

Um uso de encerramentos é fazer com que as variáveis ​​disponíveis para manipuladores de eventos. Considere o seguinte exemplo em que um fechamento é criado por uma função anônima definida no " SetHandler . " A função anônima faz referência a um parâmetro de " SetHandler . " No ponto o evento é acionado , mesmo que " SetHandler " tenha terminado , os valores de suas variáveis ​​, incluindo seus parâmetros , na conclusão da função são preservados para a função anônima . A tampa separada é criada para cada iteração do loop.

Função SetHandler ( porta , prêmio ) { door.addEventListener ( "click" , function () { alert (" Prêmio de porta " + porta + "é" + prêmio );} , false); }

window.onload = function ( ) {for (var i = 1; i < = 3; i + +) { SetHandler ( document.getElementById ( " porta " + i) , prêmio [i] );}}
Passando Parâmetros para AJAX callback Functions

semelhante ao exemplo anterior, podemos passar parâmetros para funções de retorno de chamada de AJAX com fechos . Se você fizer uma chamada de AJAX em que a variável pedido é global, você eliminou a chance de passar um parâmetro para a função de callback porque um único pedido global é criado. Ao fazer o pedido variável local , você pode criar um fechamento e dar a função de retorno de acesso a dados específicos do pedido . No exemplo abaixo , criamos um fechamento , definindo a função de retorno de chamada que usa uma variável local para a sua função de pai. Um callback separada é criada para cada uma das 10 chamadas " makeRequest "

processo function () {for . (Var i = 0; i < 10; i + +) { makeRequest (i );}
função

makeRequest (que ) { var pedido ; usethis var = pesquisa (que ); 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 ();}
privada variáveis ​​e métodos em JavaScript

JavaScript, todos os membros de um objeto são públicos, diferentemente de outras linguagens orientadas a objetos que permitem variáveis ​​privadas e métodos. Closures permitem reproduzir os métodos e variáveis ​​privadas em JavaScript. No exemplo a seguir, o objeto "segredos " é criado e executado mediante definição. Quando executado, ele contém um objeto anônimo com dois métodos: "show" e "super ", o que leva um parâmetro. Tanto a variável " secretCode " ea função " supersecreto " só pode ser acessado através de dois métodos no " segredos " do objeto. Com efeito, eles são membros privados de
segredos var

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

Anterior :

Próximo : No
  Os artigos relacionados
·IE 8 JavaScript ponteiro inválido Erro 
·Como fazer um menu acoplável Com Javascript 
·Alternativas para botões de rádio em JQuery 
·Como fazer Scroll cumulativa offset em jQuery 
·Variáveis ​​em Adobe Ciclos de Vida 
·Como converter um nó regular para um nó jQuery 
·Como fazer um gráfico com Jquery 
·O que é a subida do evento 
·JavaScript : Apostrophe Problema na URL 
·Como realçar um Tag em iFrame Conteúdo 
  Artigos em destaque
·Como ocultar um programa no AppleScript 
·Java Activation Framework Tutorial 
·Como converter texto para CSV no KiXtart 
·Como inverter a seqüência de caracteres em C Usando A…
·Como depurar no Netbeans em Java 
·ActiveX Component Tutorial 
·Como usar DMG no Windows 
·Como substituir uma bola com um pássaro Bouncing em Ja…
·Como lançar um arquivo em lotes a partir de outro 
·Como fazer uma foto em uma pintura da aguarela Reproduç…
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados