Newsgroup: it.comp.lang.javascript
Titolo: funzioni anonime

bentrovati sarei felice di sapere per quale motivo vengono usate
le funzioni anonime e quali sono i pro e i contro!!!
Io ho visto il loro utilizzo nella gestione degli eventi PERCHE'???
 
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Io ho visto il loro utilizzo nella gestione degli eventi PERCHE'???
Questione di stile di programmazione e di approccio da usare. Rendono il
codice piu' pulito e leggibile, e spesso vi sono casi in cui e' consigliato
l'uso.
In ogni caso, io le uso spesso per definire l'handle a eventi o scrivere
metodi in quanto non ha senso scrivere una funzione a se', dargli un nome a
casaccio, e associare il riferimento a tale funzione all'evento in
questione, visto che la scrivo SOLO per quel determinato evento o metodo.
Tantovale associare l'handle in modo diretto, ti pare?
Inoltre ricordati che in JS le variabili non sono tipizzate, quindi puoi
fare anche variabili funzioni e altri ammenicoli interessanti.
--------------------------------
Inviato via 
http://usenet.libero.it

Io ho visto il loro utilizzo nella gestione degli eventi PERCHE'???
Scusami... sono un pň tardo ;) Potresti farmi un esempio di Funzione
Anonima?
--
Ciao!
Davide
[DAOC PG]Armorgod Troll Sciamano - Midgard Vortigern[/DAOC PG]

 Anonima?
Da quanto ha scritto, ho detto si trattasse di questo:
onload=function(){ /* obladi' oblada' */ };


onload=function(){ /* obladi' oblada' */ };
uhm.. mi sento sempre più ignorante... non ho presente :(
mi dai un link?


 mi dai un link?
Ti basta la reference JS 1.3 di Netscape, presumo.
Cmq non c'e' niente di trascendentale, e' molto semplice. Tu sei abituato a
scrivere le funzioni in questa forma, credo:
function myfun(){
    /* put your code here */
}
e poi a fare:
myfun();
Volendo un'altra forma in cui puoi scrivere la stessa cosa e':
myfun=function(){
    /* put your code here */
}
e poi:
myfun();
Spesso si utilizza per definire gli handle. Ad esempio l'evento onload di
una pagina lo puoi definire nel modo che ho usato precedentemente.
Invece di fare:
<script>
    function init(){
        alert("Opening");
    }
    onload=init;
</script>
puoi fare:
<script>
    onload=function(){alert("Opening");}
</script>
onload essendo un evento vuole un riferimento ad una funzione da eseguire. E
questi sono due modi diversi per dare tale riferimento.
Spero di esser stato chiaro, ed eventualmente di averti fornito buoni
spunti. :)


 wrote in message
news:3e22e96d...@News.CIS.DFN.DE

ciao sono Alessandro è tutta colpa mia!!! la domanda mi è sorta perchè
stavo
interessandomi agli eventi in generale (bagaglio personale)e su pro html
ho trovato un po
di articoli carini.Cmq potresti andare a vedere i seguenti articoli 
magari ti rendi conto in che contesto ho visto le benedette funzioni
anonime
di cui vi ho parlato
indirizzo:
http//
pro.html.it
articoli:
1)-interazione utente-browser:gli eventi e javascript prima parte
2)-interazione utente-browser:gli eventi e javascript seconda parte
3 4)-l'oggetto Event che è diviso in due diversi articoli(W3C e
crossbrowser)
sono articoli ben fatti e li mi è nata la curiosità.
non so quanto posso esserti stato di aiuto ma qualche nuovo concetto 
ti tornerà sicuramente utile magari anche per altre cose
ciao 


Io uso una via di mezzo per la emulazione delle classi in js:
var MiaClasse=function(){
//bla bla
this.trova1=function(){alert("ciao 1")}
//oppure
this.trova2=new Function("alert('ciao 2')");
}
Come vedi questa č una funzione che include funzioni
Il secondo esempio trova2() č il vecchio metodo, e ogni chiamata richiede
una compilazione perchč tutti i contenuti della funzione vanno nelle
parentesi tonde e come STRINGA (cioč fra apici). Ne deriva che ogni volta
l'interprete deve, in buona sostanza, fare l'eval() del contenuto Stringa.
a quel punto
var instance=new MiaClasse();
instance.trova1();
instance.trova2();
Attualmente va di moda inzializzare funzioni dentro funzioni in altro modo e
cioč:
var foo=function(){
function trova3(){alert('ciao'));
foo.prototype.trova3=trova3;
}
Che č un modo assai farraginoso secondo me: serve solo a rendere la sintassi
di JS piů OOP, per i programmatori che non riescono a ragionare in termini
alternativi (di solito provenienti da anni di Java).
ZERO č stato molto esauriente come al solito.
Vediamo di ricapitolare:
FUNZIONI:
function myfun(){
    /* put your code here */
}
var myfun=function(){
    /* put your code here */
}
onload=function(){alert("Opening");}
var myfun=new Function("alert('ciao da compilare')");
ciao
Alberto
http://www.unitedscripters.com/

 ZERO č stato molto esauriente come al solito.
Danke. ;)


Ah ma non lo uso mica io!
E' per questo che sconsigliavo la prassi. Ci sono newsgroup esteri dove non
fanno altro che sponsorizzare questo tipo di approccio (quando gli ho detto
quel che ne pensavo cioč che non era necessario poichč bastava inzializzare
funzioni anonime han subito preso le arie snob ah ah)
ciao
Alberto


 funzioni anonime han subito preso le arie snob ah ah)
Si, ma io mi riferisco ad altro. Al di la' dell'utilizzo di funzioni
anonime, quel che rende il codice un po' insensato non e' la mancanza di
utilizzo di queste, oppure la dichiarazione di funzioni interne all'oggetto,
quanto l'uso di prototype DENTRO l'oggetto stesso.


</script>
oki. Grazie a te e ad ale. :)
Potrebbe essere utile... in effetti.


 Potrebbe essere utile... in effetti.
Piu' di quanto credi.. e non solo a livello estetico. :)
