[Web2.0] Domanda su prototype
Gianluca Baù
gianluca a ihuri.it
Lun 22 Gen 2007 16:09:37 CET
>
> On 19/gen/07, at 19:17, Davide Michel 'ZioBudda' Morelli wrote:
>
>>>>> Devi usare una closure. Crea una lambda function nella quale
>>>>>referenzi i parametri che manterranno i loro valori.
>>>>>
>>>>>
>>>>Che per ignoranti si traduce in ???
>>>>
>>>>
>>>ROTFL :-)
>>>
>>>
>> In verità ho mezzo capito cosa dice, pero' voglio essere sicuro di
>> aver capito.
>
>
> Non ho prototype sotto mano, ma l'esempio è generico, e si risolve in
> questo modo. Se non ho parametri da passare, la situazione è la seguente:
>
> function AjaxStub(cb) { cb(); }
>
> function FunctionWithoutParameters() {
> alert("FunctionWithoutParameters");
> }
>
> function Do() {
> AjaxStub(FunctionWithoutParameters);
> }
> Do();
>
> Chiamando Do() viene simulata una richiesta Ajax con una callback (che
> in questo caso viene chiamata subito). La funzione di callback non
> accetta parametri, e tutto funziona senza problemi. Ora, supponiamo di
> voler passare dei parametri alla Do() e che questi parametri debbano
> essere passati alla funzione di callback. Devo quindi creare una
> funzione lambda che sfruttando ilprincipio delle closure porti con sé
> anche i due parametri:
>
> function AjaxStub(cb) { cb(); }
>
> function FunctionWithParameters(p1, p2) {
> alert("FunctionWithParameters: [" + p1 + "] [" + p2 + "]");
> }
>
> function Do(p1, p2) {
> AjaxStub(function () { FunctionWithParameters(p1, p2); } );
> }
>
> Do('primo', 'secondo');
>
> In pratica, oltre ad avere funzioni che accettano parametri, la parte
> importante è quella in cui viene passata la funzione di callback. Non
> più direttamente la funzione, ma una funzione costruita al volo.
> All'interno di questa funzione vengono referenziate le due variabili
> p1 e p2, che nello scope corrente corrispondono proprio ai parametri
> passati alla funzione Do().
>
> Ovviamente l'esempio è stato fatto con due soli parametri, ma è
> immediatamente estendibile a n parametri.
>
> Testato su Safari.
>
> Cris
>
>
> --
> Cristiano Verondini
>
>
>
Benissimo, questa era la soluzione giusta.
Grazie mille per l'aiuto, a tutti comunque :)
Maggiori informazioni sulla lista
Web2.0