Chiede implementazione del metodo Parent

Le chiamate metodo di attuazione dei genitoriproxyFunc.apply e passa come parametri questa e la modifica argomenti args array. Poi, quando la funzione associata con la variabile proxyFunc viene eseguito, ogni volta che questo viene fatto riferimento, l'istanza corretta oggetto si fa riferimento. Utilizzando applicare è estremamente utile e semplifica l'implementazione proxy metodo. Il lato negativo è che il metodo originale passato al metodo proxy deve utilizzare anche applicare. Se quando si chiama il metodo originale la funzione di proxy non fa uso di applicare, quindi gli errori possono essere generati.

  

Quando viene eseguito, il codice generato funzionerà correttamente. La sfida consiste nella generazione del codice. Un approccio è quello di generare un buffer di testo che rappresenta la completa attuazione del metodo proxy. Un altro approccio è quello di generare dinamicamente e valutare alcune parti del codice generato, e utilizzare una funzione dinamica per le altre parti. Ciascuna di queste soluzioni è problematica, e la soluzione migliore è quella di utilizzare farmaci generici JavaScript. Utilizzando i generici JavaScript, è possibile definire il codice desiderato, e in fase di runtime gli aspetti comportamentali possono essere espansi. Il seguente codice è la soluzione completa di generazione proxy.

 Fonte: / website / root / scripts / jaxson / Common.js proxy: funzione (ad esempio, funcIdentifier, newFunc) (if (! esempio [funcIdentifier]) (throw new Error ( "Metodo non esiste su questo oggetto (" funcIdentifier + + " ) ");) proxyPrototype var = function () (var origFunc = __orig; var proxyFunc = __proxy; var args = new Array (); for (var c1 = 0; c1 <arguments.length; c1 + +) (args. push (arguments [0]);) args.push (origFunc); args.push (argomenti); return proxyFunc.apply (this, args);) istanza [funcIdentifier] = Generics.expand (proxyPrototype, (__orig: esempio [ funcIdentifier], __proxy: newFunc));),

L'attuazione proxy non ha bisogno di spiegazioni, perché il codice è già stato ampiamente spiegato. Guardate la definizione della variabile proxyPrototype, e si dovrebbe notare una somiglianza con il codice generato ideale che è stato spiegato tutto l'articolo. L'unica differenza con proxyPrototype e il codice ideale è che i valori per origFunc e proxyFunc non sono stati definiti.

Le variabili origFunc e proxyFunc è stato assegnato il __orig e __proxy valori delle variabili, che sono identificatori utilizzati per i prodotti generici JavaScript espansione. La chiamata a Generics.expand amplierà il buffer per assomigliare il buffer ideale. I parametri per il metodo di proxy sono esempio, che rappresenta l'istanza dell'oggetto di generare un proxy metodo di attuazione; funcIdentifier, che rappresenta un buffer di stringa del metodo di proxy; e newFunc, che rappresenta la funzione di proxy che viene chiamato prima l'originale.

Il metodo proxy può essere usato come mostrato nell'esempio seguente. Fonte: / website / ROOT / articles ajax / javascript / automated_proxy proxy.html: function () (var cls = DefinedClass new (); info ( "automated_proxy (cls.defined | prima)", cls.defined.toString ()); ops . proxy (cls, "definito", function (tstValue, toCall, args) (info ( "proxyfunction", "il parametro (" tstValue + + ") ha ricevuto arg count (" arguments.length + + ") count ARG originale (" + args.length + ")"); toCall.apply (this, args);)); info ( "automated_proxy (cls.defined | dopo)", cls.defined.toString ()); cls.value = 10; cls.defined (10);)

In sede di attuazione, il tipo di DefinedClass viene creata un'istanza e assegnato alla variabile cls. A scopo illustrativo, la realizzazione di cls.defined è generato (info (..., cls.defined.toString)) per mostrare ciò che l'implementazione originale metodo. La chiamata a ops.proxy ha tre parametri, e le prime due parametri (cls e "definiti") sono evidenti. Il terzo parametro è il metodo del proxy, e, nel caso dell'esempio, si tratta di una funzione definita inline. Il terzo parametro non deve essere un metodo inline, ma può essere un riferimento funzione o un'altra istanza di classe. Dopo la chiamata a ops.proxy è un'altra chiamata alla funzione info per illustrare la versione modificata del metodo cls.defined.

Suggerimento Per verificare la vostra comprensione, eseguire il codice di prova dei campioni per vedere come funziona il codice. L'ultima riga di codice che chiama il metodo definito dimostra che il metodo proxy viene chiamato prima il metodo originale. Per l'attuazione del pattern Proxy per un metodo, a mantenere i seguenti punti in mente:

• Il pattern proxy per un metodo viene applicato quando si desidera filtrare, preprocessare e post elaborazione dei parametri prima (se) sono passati al metodo.

• L'implementazione del metodo proxy è responsabile per la chiamata al metodo originale.

• Il pattern Proxy per un metodo è meglio implementato, grazie all'integrazione di funzioni all'interno di funzioni. Il vantaggio di utilizzare un approccio integrato è che la funzione può essere referenziato da altre istanze di oggetti senza danneggiare l'implementazione del metodo.

• Il pattern proxy per un metodo può essere integrato più volte.

un articolo presentato da Sonja Lande


Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni.
Importante: Questo articolo "implementazione del metodo padre chiama" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.


Online: 348 users browsing the articles directory