Parent execução chamadas métodoO pai chama o método de execuçãoproxyFunc.apply e passa como parâmetros a esta e pela args argumentos da matriz. Então, quando a função associada com a variável proxyFunc é executado, sempre que é referenciado, a instância do objeto correto é referenciado. Usando aplicar é extremamente útil e simplifica a implementação do método de proxy. A desvantagem é que o método original passado para o método de proxy também deve usar aplicar. Se ao chamar o método original a função proxy não usar aplica-se, então erros podem ser gerados.
Quando executado, o código gerado irá funcionar corretamente. O desafio reside na geração do código. Uma abordagem é a de gerar um buffer de texto que representa a implementação completa do método de proxy. Outra abordagem é a de gerar dinamicamente e avaliar algumas partes do código gerado, e usar uma função dinâmica para as outras partes. Cada uma dessas soluções é problemático, ea melhor solução é a utilização de genéricos JavaScript. Usando generics JavaScript, você pode definir o código desejado, em tempo de execução e os aspectos comportamentais podem ser expandidos. O código a seguir é a solução completa geração de proxy. Fonte: / website / root / scripts / Jaxson / proxy Common.js: function (exemplo, funcIdentifier, newFunc) (if (instance! [funcIdentifier]) (throw new Error ( "Método não existe neste objeto (" + + funcIdentifier " ) ");) proxyPrototype var = function () (var origFunc = __orig; var __proxy = proxyFunc; var args = new Array (); for (var c1 = 0; c1 <arguments.length; c1 + +) (args. push (arguments [0]);) args.push (origFunc); args.push (arguments); retorno proxyFunc.apply (this, args);) [instancia funcIdentifier] = Generics.expand (proxyPrototype, (__orig: [instancia funcIdentifier], __proxy: newFunc));) A implementação de proxy não precisa de muita explicação, porque o código já foi amplamente explicado. Olhe para a definição da variável proxyPrototype, e você deve notar uma semelhança com o código ideal gerado que foi explicado ao longo do artigo. A única diferença com proxyPrototype eo código ideal é que os valores para origFunc e proxyFunc não foram definidos. As variáveis origFunc e proxyFunc tenha sido atribuído o __orig e __proxy valores de variáveis, que são identificadores utilizados na expansão de genéricos JavaScript. A chamada para Generics.expand irá expandir a memória intermédia para assemelhar-se a reserva ideal. Os parâmetros para o método de proxy são exemplo, o que representa a instância do objeto para gerar uma implementação do método proxy; funcIdentifier, o que representa uma reserva seqüência de caracteres do método de procuração; e newFunc, que representa a função de proxy que é chamado antes do original. O método de proxy pode ser usado como mostrado no exemplo a seguir. Fonte: / website / ROOT / artigos ajax / javascript / automated_proxy proxy.html: function () (var = cls DefinedClass novo (); info (automated_proxy "(cls.defined | antes)", cls.defined.toString ()); ops . proxy (cls, "definido", function (tstValue, toCall, args) (info (proxyfunction "," parâmetro ( "+ tstValue +") recebeu arg count ( "+ arguments.length +") count arg original ( " + + args.length ")"); toCall.apply (this, args);)); info (automated_proxy "(cls.defined | após)", cls.defined.toString ()); cls.value = 10; cls.defined (10);) Na execução, o tipo DefinedClass é instanciado e atribuído à variável CLS. Para efeitos de ilustração, a implementação de cls.defined é gerado (info cls.defined.toString (...,)) para mostrar o que a implementação do método original. A chamada para ops.proxy tem três parâmetros, e os dois primeiros parâmetros (CLS e "definido") são óbvias. O terceiro parâmetro é o método de proxy, e no caso do exemplo, é uma função definida inline. O terceiro parâmetro não tem de ser um método inline, que pode ser uma referência de função ou de outra instância de classe. Após a chamada para ops.proxy é outra chamada para a função de informações para ilustrar a versão modificada do método cls.defined. Dica Para testar o seu próprio entendimento, execute o código a partir de amostras para ver como funciona o código. A última linha do código que chama o método definido ilustra que o método é chamado de proxy antes que o método original. Ao implementar o padrão proxy para um método, manter os seguintes pontos em mente: • O padrão proxy para um método é aplicado quando você quiser filtrar, pré-processar, e os parâmetros antes de processá-(se) eles são passados para o método. • A implementação do método de proxy é responsável por chamar o método original. • O padrão proxy para um método é melhor aplicado pela incorporação de funções dentro de funções. A vantagem de utilizar uma abordagem integrada é que a função pode ser referenciado por outras instâncias de objeto, sem corromper o método de execução. • O padrão proxy para um método pode ser incorporado várias vezes. um artigo submetido por Sonja Lande Isenção de responsabilidade:O nosso site não se responsabiliza pelo conteúdo deste artigo. Webarticles é uma fonte de informação livre. Importante: Este artigo "Parent implementação do método chama" foi traduzida por um software automático. Nós sentimos muito por quaisquer erros de ortografia que pode ter ocorrido. Obrigado pela sua compreensão.
|
|||||
| Online: 203 users browsing the articles directory |
|
|