Pide la aplicación de Padres método deEl padre llama al método de aplicaciónproxyFunc.apply y pasa como parámetros de esta y la vez args argumentos de matriz. Luego, cuando la función asociada con la variable proxyFunc se ejecuta, siempre que se hace referencia, la instancia de objeto correcto se hace referencia. Uso de aplicación es muy útil y simplifica la implementación del método del proxy. El inconveniente es que el método original se pasa al método de proxy también debe utilizar aplicar. Si al llamar al método original de la función de proxy no uso se aplican, pues los errores podrían generar.
Cuando se ejecuta, el código generado funcionará correctamente. El desafío radica en la generación del código. Un enfoque consiste en generar un buffer de texto que representa la aplicación completa del método del proxy. Otro enfoque consiste en generar de forma dinámica y la evaluación de algunas partes del código generado, y el uso de una función dinámica para las otras partes. Cada una de estas soluciones es problemática, y la mejor solución es utilizar los genéricos JavaScript. Uso de medicamentos genéricos JavaScript, puede definir el código deseado, y en tiempo de ejecución de los aspectos de comportamiento puede ser ampliado. El código siguiente es la solución completa para la generación de proxy. Fuente: / website / root / scripts / Jaxson / Common.js proxy: function (ejemplo, funcIdentifier, newFunc) (if (! ejemplo [funcIdentifier]) (throw new error ( "Método no existe en este objeto (" funcIdentifier + + " ) ");) proxyPrototype var = function () (var origFunc = __orig; proxyFunc var = __proxy; var args = new Array (); for (var c1 = 0; c1 <arguments.length; c1 + +) (args. push (arguments [0]);) args.push (origFunc); args.push (argumentos); regreso proxyFunc.apply (this, args);) ejemplo [funcIdentifier] = Generics.expand (proxyPrototype, (__orig: ejemplo [ funcIdentifier], __proxy: newFunc));), La aplicación de proxy no necesita mucha explicación, porque el código que ya se ha explicado. Mira la definición de la variable proxyPrototype, y usted debe notar una similitud con el código generado ideal que se explica todo el artículo. La única diferencia con proxyPrototype y el código ideal es que los valores de origFunc y proxyFunc no se han definido. Las variables origFunc y proxyFunc se les han asignado __orig y __proxy valores de las variables, que son identificadores que se utilizan en la expansión de los genéricos de JavaScript. La llamada a Generics.expand ampliará el buffer a parecerse al ideal de amortiguamiento. Los parámetros que el método del proxy ejemplo, lo que representa la instancia del objeto de generar un método de aplicación proxy, funcIdentifier, lo que representa un búfer de cadena del método de representación; y newFunc, que representa la función de proxy que se llama antes de que el original. El método de proxy puede ser utilizado como se muestra en el ejemplo siguiente. Fuente: / web / ROOT / artículos AJAX / JavaScript / automated_proxy proxy.html: function () (var = CLS DefinedClass nuevo (); info ( "automated_proxy (cls.defined | Antes)", cls.defined.toString ()); OPS . proxy (CLS, "definido", function (tstValue, toCall, args) (info ( "proxyfunction", "parámetro (" + tstValue + ") recibió arg count (" + arguments.length + ") cuenta arg original (" + + args.length ")"); toCall.apply (this, args);)); info ( "automated_proxy (cls.defined | después)", cls.defined.toString ()); cls.value = 10; cls.defined (10);) En la aplicación, el tipo DefinedClass se crea una instancia y asigna a la variable CLS. A título de ejemplo, la aplicación de cls.defined se genera (información (..., cls.defined.toString)) para mostrar lo que la implementación del método original. La llamada a ops.proxy tiene tres parámetros, y los dos primeros parámetros (CLS y "definido") son evidentes. El tercer parámetro es el método de representación, y en el caso del ejemplo, es una línea definida por la función. El tercer parámetro no tiene que ser un método en línea, puede ser una referencia de función o de otra instancia de la clase. Después de la llamada a ops.proxy es otra llamada a la función de información para ilustrar la versión modificada del método de cls.defined. Consejo Para probar su propia comprensión, ejecute el código de prueba de las muestras para ver cómo funciona el código. La última línea de código que llama al método definido pone de manifiesto que el método proxy se llama antes de que el método original. En la aplicación del patrón Proxy para un método, recuerda lo siguiente en mente: • El patrón Proxy para un método se aplica cuando se desea filtrar, preproceso, y los parámetros de procesado antes de que (si) se pasan al método. • La aplicación del método de proxy es responsable de llamar al método original. • El patrón de un proxy es el mejor método aplicado por incrustación de funciones dentro de funciones. La ventaja de utilizar un enfoque integrado es que la función puede ser referenciada por otras instancias de objetos sin corromper la aplicación del método. • El patrón Proxy para un método puede ser embebido en múltiples ocasiones. un artículo presentado por Sonja Lande Descargo de responsabilidad:Nuestro sitio web no es responsable por el contenido de este artículo. Webarticles es un recurso de información gratuito. Importante: Este artículo "implementación del método Padre llama" fue traducida por un software automático. Sentimos pena por los errores de ortografía que pueda haber ocurrido. Gracias por su comprensión.
|
|||||
| Online: 350 users browsing the articles directory |
|
|