Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    arguments è definito come array ma non ne eredita tutti i metodi

    Ciao,
    dovendo rilanciare nel mio script una funzione sempre con gli stessi argomenti, mi sono imbattuto nell'oggetto arguments, che la guida O'Reilly definisce come un array a tutti gli effetti secondo gli standards ECMA-262 (fin da JavaScript 1.1).

    Se così fosse, il metodo:
    codice:
    var args = arguments.toString();
    restituirebbe una stringa composta dagli argomenti separati da virgole, come per qualsiasi altro normale array non nativo costruito nella funzione.
    Invece non è così, infatti viene restituito (sia da FF, sia da MSIE) la stringa [object Object]

    Questo mi obbliga a costruirla in modo più macchinoso con un ciclo che scorre tutti gli elementi dell'oggetto arguments e ne concatena i valori ad una variabile apposita:
    codice:
    var args = "";
    for (i = 0; i < arguments.length; i++) {
    args += arguments[i];
    if (i < (arguments.length - 1)) { args += ","; }
    }
    Sapete cosa c'è all'origine di questo problema, ed eventualmente come ottimizzare il codice relativo?
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  2. #2
    Utente di HTML.it L'avatar di hcka
    Registrato dal
    Oct 2002
    Messaggi
    435
    Non mi sono mai imbattuto in questo problema, comunque per ottimizzare la tua iterazione per concatenare non controllare se il parametro è l'ultimo per non mettere la virgola.

    Fai così:

    codice:
    var
        args = "";
    for (i = 0; i < arguments.length; i++)
    {
        args += "," + arguments[i];
    }
    if (args.length) args = args.substring(1);
    In questo modo risparmi il controllo ad ogni ciclo.

    [OT]
    PS: Bello il proverbio Zen nella tua firma!!
    [/OT]

  3. #3
    Grazie,
    è una buona soluzione per risparmiare il controllo if per ogni elemento dell'array, l'ho già implementata.

    Originariamente inviato da hcka
    ...
    [OT]
    PS: Bello il proverbio Zen nella tua firma!!
    [/OT]
    Sì, l'ho inventato io! :quote:
    Cioè... è quello che molte filosofie predicano ed io l'ho semplicemente tradotto in php, il linguaggio che mi è più familiare.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.