Iniettare codice in una funzione preesistente

12 settembre 2007 at 17:01 Lascia un commento

Capita di aver a che fare con funzioni sviluppate da terzi e per questo non modificabile. Ma se proprio avessimo bisogno di modificare una funzione già esistente… come fare?? Ecco due casi.

CASO 1: funzione generica

Dato che vince l’ultima funzione dichiarata, basta dichiarare una funzione con lo stesso nome, naturalmente dopo quella interessata.

ESEMPIO 1:

function prova() {
alert(1);
}

function prova() {
alert(2);
}

prova(); //  genera un alert “2”

CASO 2: funzione generata server-side

Queste funzioni vengono generate solitamente con delle variabili valorizzate direttamente dal database. Di conseguenza dobbiamo mantenere parte del codice e cambiare o aggiungere altro. La soluzione è trattare la funzione come una stringa.

ESEMPIO 2:

function prova() {
alert(1);
}

var prova=String(prova);                // trasformo la funzione in stringa
prova=prova.substr(0,prova.length-2);    // tolgo l’ultima graffa
prova+=”alert(2);”;                        // aggiungo codice custom
prova+=”}”;                                // rimetto la graffa
eval(prova);                            // trasformo la stringa in funzione

prova(); //  genera prima un alert “1” e poi un alert “2”

Entry filed under: JavaScript. Tags: .

Includere js dinamicamente Debug JS con Firebug anche su IE

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Trackback this post  |  Subscribe to the comments via RSS Feed


Categorie

JavaScript String .replace

Archivi

Seguimi su Twitter


%d blogger cliccano Mi Piace per questo: