Métodos de aplicación de proxyProblema que desea una estrategia eficaz para la aplicación de métodos de representación. Teoría El patrón Proxy se define como una implementación de una interfaz que actúa como un paso para la aplicación real. Cualquier usuario de la instancia de interfaz no se dará cuenta de que una llamada a un método particular, está siendo desviada. La plena aplicación de la pauta de proxy no es el objetivo de este artículo, sino que este artículo se centra en la aplicación del patrón Proxy para un solo método. En el camino alternativo de cableado a dos métodos, el defined2 método asociado a la instancia de clase está conectada a la primera convocatoria del nuevo método, y luego llamar al método original. En este tipo de cableado, no están aplicando el patrón Proxy está creando un modelo de delegado. La principal diferencia entre un proxy y modelo de delegado es que el modelo de proxy se encarga de llamar a la aplicación original, y el modelo de delegado no tiene esa restricción. Solución Ahora que sabes la diferencia entre los dos modelos y lo que quieres lograr, vamos a examinar lo que el código fuente debe ser similar, y luego convertir esa fuente en un método general. Tenga en cuenta la declaración de la clase siguiente. Fuente: / web / ROOT / artículos AJAX / JavaScript / DefinedClass función proxy.html () () DefinedClass.prototype.defined = function (tstvalue) (info ( "DefinedClass.defined", "parámetro (" + tstvalue + ") cuenta los argumentos ( "+ + arguments.length ")"); DefinedClass.prototype.defined.value = 10; assertEquals (tstvalue, this.value);)La clase DefinedClass se define, y tiene un método único, definido. El método de nivel patrón Proxy se aplicarán a definir. El método de proxy que se llama antes de que el método original definido es el siguiente. Fuente: / web / ROOT / artículos AJAX / JavaScript / proxy.html var proxyfunc = function (tstValue, toCall, args) (info ( "proxyfunction", "parámetro (" + tstValue + ") recibió arg count (" + + arguments.length ") cuenta arg original (" + args.length + ")"); toCall.apply (this, args);)
Aplicación del proxy puede ser un desafío, porque la implementación del método actual (definido) tiene que ser movido. Por la aplicación patrón Proxy, la función que hace referencia la variable proxyfunc tiene que ser llamada antes de la implementación del método actual. La solución obvia es asignar el método definido a la referencia variable proxyfunc, como sigue: DefinedClass.prototype.defined = proxyfunc Esta solución es peculiar, ya que el método original no se hace referencia a proxyfunc. El método original parece haber desaparecido, y cuando proxyfunc se intenta llamar al método original, se producirá un error. El método original podría seguir una convención en la implementación del método hace referencia a otro de propiedad: DefinedClass.prototype.originalDefined = DefinedClass.prototype.defined; DefinedClass.prototype.defined = proxyfunc proxyfunc, que es responsable de llamar a la aplicación original mediante convenio, sabe que el método original se almacena en la propiedad originalDefined. Así que esto parece bien, pero en realidad no hay otro problema. ¿Qué pasa si usted tiene un método de proxy de un método de proxy? Dado que el método originalDefined ya está definido, no se puede sobreescribir y perder el método original para ser llamado? Otra solución es ampliar el convenio a lo siguiente: DefinedClass.prototype.originalOriginalDefined = DefinedClass.prototype.originalDefined; DefinedClass.prototype.originalDefined = DefinedClass.prototype.defined; DefinedClass.prototype.defined = proxyfunc La desventaja de esta solución es que por la convención, el identificador contiene un número de identificadores originales. La Convención exige que un método proxy específico se colocará en un lugar específico, de lo contrario, el método de proxy no sabe si llamar originalDefined o orginalOriginalDefined. Otro problema es, ¿y si originalDefined referencia a un método real? La solución a este artículo método proxy no es crear nuevas propiedades, sino para crear funciones integradas. Funciones de incrustación permite declarar una función que no es accesible externamente, y el método de proxy puede ser embebido dentro de un método del proxy. El código JavaScript generado la siguiente manera: DefinedClass.prototype.defined = function () (var origFunc = function (tstvalue) (info ( "DefinedClass.defined", "parámetro (" tstvalue + + ") cuenta los argumentos (" + + arguments.length ")"); assertEquals (tstvalue, this.value);) args proxyFunc var = function (tstValue, toCall,) (info ( "proxyfunction", "parámetro (" tstValue + + ") recibió arg count (" + arguments.length + ") original arg count ( "+ args.length + ")"); toCall.apply (this, args);) var args = new Array (); for (var c1 = 0; c1 <arguments.length; c1 + +) (args . push (argumentos [C1]);) args.push (origFunc); args.push (argumentos); proxyFunc.apply (this, args);)
Dos variables, origFunc y proxyFunc, las funciones de referencia. La variable origFunc representa la implementación original del método definido. La variable proxyFunc representa el método de proxy que se llama antes de que el método original. Ambas funciones están incorporadas en una función que es responsable de llamar al método del proxy. Incrustación de las funciones dentro de una función no requiere que el método de proxy para saber lo que se llama la función original. Para cada instancia de la inserción, hay un método de representación y el método original. La convención es que el método que incrusta los dos métodos de seguimiento de quién llamó a quién y qué parámetros se pasan alrededor. El papel de los padres es el método para gestionar las referencias de los métodos integrados, la gestión de este caso, y gestionar los parámetros. El método de los padres gestiona los parámetros por considerar los argumentos de un tipo de matriz. El código JavaScript definido por los argumentos objeto es una serie de argumentos. El método de los padres va a crear un nuevo conjunto de argumentos para que el método proxy sepa qué función a llamar y tiene la capacidad de modificar los argumentos basados en la instancia del objeto original. El propósito de crear una serie de argumentos que contiene los argumentos que se refiere a la declaración del método de representación, que siempre tendrá como últimos parámetros del método para llamar y argumentos. Incrustación de una función dentro de una función tiene un problema: ¿cómo asignar el esta referencia en la función incrustada? JavaScript resuelve este problema proporcionando el aplicar el método, que se asocia con un objeto función. 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 "Métodos de aplicación de proxy", 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: 271 users browsing the articles directory |
|
|