Parent méthode appelle la mise en œuvreLa méthode mise en œuvre demande des parentsproxyFunc.apply et passe comme paramètres de cette année et les arguments args modification de tableau. Puis, lorsque la fonction associée à la variable proxyFunc est exécutée, chaque fois que cela est référencé, l'instance d'objet correct est référencé. Utilisation de candidature est extrêmement utile et simplifie l'implémentation de la méthode proxy. L'inconvénient est que la méthode originale passée à la méthode de remplacement doit également utiliser d'application. Si lors de l'appel de la méthode initiale de la fonction proxy n'utilise pas applicable, des erreurs pourraient être émises.
Lorsqu'il est exécuté, le code généré ne fonctionne correctement. Le défi réside dans la génération du code. Une approche consiste à générer une mémoire tampon de texte qui représente l'implémentation complète de la méthode de remplacement. Une autre approche consiste à générer de façon dynamique et d'évaluer certaines parties du code généré, et utiliser une fonction dynamique pour les autres parties. Chacune de ces solutions est problématique, et la meilleure solution est d'utiliser des médicaments génériques JavaScript. En utilisant les génériques JavaScript, vous pouvez définir le code désiré, et à l'exécution des aspects comportementaux peuvent être élargis. Le code suivant est la solution complète proxy génération. Source: / website / root / scripts / jaxson / Common.js proxy: fonction (par exemple, funcIdentifier, newfunc) (if (! exemple [funcIdentifier]) (throw new Error ( "méthode n'existe pas sur cet objet (" + 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 (arguments); retour proxyFunc.apply (this, args);) exemple [funcIdentifier] = Generics.expand (proxyPrototype, (__orig: par exemple [ funcIdentifier], __proxy: newfunc));), La mise en œuvre de procuration n'a pas besoin de beaucoup d'explications, parce que le code a déjà été largement expliquée. Regardez la définition de la variable proxyPrototype, et vous devriez constater une similitude avec le code généré idéal qui a été expliqué dans l'article. La seule différence avec proxyPrototype et le code idéal est que les valeurs pour origFunc et proxyFunc n'ont pas été définies. Les variables origFunc et proxyFunc a été attribué le __orig et __proxy les valeurs des variables, qui sont des identifiants utilisés dans l'expansion des génériques JavaScript. L'appel à Generics.expand élargira la mémoire tampon à ressembler à la mémoire tampon idéal. Les paramètres à la méthode de remplacement sont, par exemple, qui représente l'instance d'objet pour générer une implémentation de la méthode par procuration; funcIdentifier, ce qui représente un tampon de chaîne de la méthode de procuration; et newfunc, qui représente la fonction de proxy qui est appelée avant que l'original. La méthode de remplacement peuvent être utilisés comme le montre l'exemple suivant. Source: / site / ROOT / articles ajax / javascript / automated_proxy proxy.html: function () (var cls = DefinedClass new (); info ( "automated_proxy (cls.defined | avant)", cls.defined.toString ()); ops . proxy (cls, "définies", function (tstValue, toCall, args) (info ( "proxyfunction", "paramètre (" tstValue + + ») a reçu arg count (" + arguments.length + ") comptent arg initial (" + args.length + ")"); toCall.apply (this, args);)); info ( "automated_proxy (cls.defined | after)", cls.defined.toString ()); cls.value = 10; cls.defined (10);) Dans l'application, le type DefinedClass est instancié et assignée à la variable CLS. À des fins d'illustration, la mise en œuvre de cls.defined est généré (info (..., cls.defined.toString)) pour montrer ce que l'implémentation de la méthode est originale. L'appel à ops.proxy a trois paramètres, et les deux premiers paramètres (CLS et «définie») sont évidents. Le troisième paramètre est la méthode de remplacement, et dans le cas de l'exemple, il s'agit d'une ligne définie par la fonction. Le troisième paramètre ne doit pas être une méthode inline; elle peut être une référence à une fonction ou d'une autre instance de classe. Après l'appel de ops.proxy est un autre appel à la fonction d'infos à illustrer la version modifiée de la méthode cls.defined. Astuce Pour tester votre propre compréhension, exécutez le code de test à partir des échantillons de voir comment le code fonctionne. La dernière ligne de code qui appelle la méthode définie illustre le fait que la méthode de remplacement est appelée avant la méthode originale. Lorsqu'elles mettent en œuvre le modèle de procuration pour une méthode, gardez les points suivants à l'esprit: • Le modèle de procuration pour une méthode est appliquée lorsque vous souhaitez filtrer, prétraitement, et les paramètres de post-traitement avant (si) ils sont passés à la méthode. • La mise en œuvre de la méthode de remplacement est responsable de l'appel de la méthode originale. • Le modèle de procuration pour qu'une méthode est mieux mise en oeuvre en intégrant des fonctions au sein de fonctions. L'avantage d'utiliser une approche intégrée est que la fonction peut être référencé par d'autres instances d'objet sans altérer l'implémentation de la méthode. • Le modèle de procuration pour une méthode peut être intégré à plusieurs reprises. un article présenté par Sonja Lande Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite. Important: Cet article «Parent mise en œuvre les appels de méthode" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.
|
|||||
| Online: 287 users browsing the articles directory |
|
|