<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Javascript</title>
        <link>http://blogs.ugidotnet.org/angellaa/category/Javascript.aspx</link>
        <description>Javascript</description>
        <language>it-IT</language>
        <copyright>Andrea Angella</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Intervista al Team Leader di JQuery</title>
            <link>http://blogs.ugidotnet.org/angellaa/archive/2008/11/24/intervista-al-team-leader-di-jquery.aspx</link>
            <description>&lt;p&gt;Su &lt;a href="http://www.html.it/" target="_blank"&gt;HTML.it&lt;/a&gt; è possibile trovare la traduzione in italiano dell'interessante &lt;a href="http://javascript.html.it/articoli/leggi/2879/intervista-a-john-resig/1/" target="_blank"&gt;intervista a John Resig&lt;/a&gt; che è il Team Leader del framework JQuery.&lt;/p&gt;  &lt;p&gt;Può essere sicuramente interessante valutare l'acquisto del suo libro &lt;em&gt;&lt;a href="http://www.amazon.com/Pro-JavaScript-Techniques-John-Resig/dp/1590597273/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1227561318&amp;amp;sr=8-1" target="_blank"&gt;Pro Javascript Techniques&lt;/a&gt;&lt;/em&gt; e di un altro intitolato &lt;em&gt;&lt;a href="http://www.amazon.com/Secrets-JavaScript-Ninja-John-Resig/dp/193398869X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1227562278&amp;amp;sr=1-1" target="_blank"&gt;Secrets of the Javascript Ninja&lt;/a&gt;&lt;/em&gt; che sarà disponibile il prossimo anno.&lt;/p&gt;  &lt;p&gt;Nel frattempo sono in attesa del libro &lt;strong&gt;&lt;a href="http://www.amazon.com/jQuery-Action-Bear-Bibeault/dp/1933988355" target="_blank"&gt;JQuery in Action&lt;/a&gt;&lt;/strong&gt; che sono molto curioso di leggere. &lt;a href="http://blogs.ugidotnet.org/rgm/Default.aspx" target="_blank"&gt;Gian Maria&lt;/a&gt; è colpa tua :-)&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/angellaa/WindowsLiveWriter/IntervistaalTeamLeaderdiJQuery_13C1A/jquery_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="jquery" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/angellaa/WindowsLiveWriter/IntervistaalTeamLeaderdiJQuery_13C1A/jquery_thumb.jpg" width="240" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/angellaa/aggbug/94741.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Angella</dc:creator>
            <guid>http://blogs.ugidotnet.org/angellaa/archive/2008/11/24/intervista-al-team-leader-di-jquery.aspx</guid>
            <pubDate>Mon, 24 Nov 2008 23:37:18 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/angellaa/archive/2008/11/24/intervista-al-team-leader-di-jquery.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/angellaa/comments/commentRss/94741.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/angellaa/services/trackbacks/94741.aspx</trackback:ping>
        </item>
        <item>
            <title>Javascript - Particolarit&amp;agrave; del linguaggio</title>
            <link>http://blogs.ugidotnet.org/angellaa/archive/2007/10/01/88622.aspx</link>
            <description>&lt;p&gt;&lt;br /&gt;Voglio mostrare alcuni esempi di codice Javascript per illustrare alcuni aspetti poco noti e interessanti del linguaggio.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;L'importanza della parola chiave var:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;strong&gt;function pensa()&lt;br /&gt;{&lt;br /&gt;   &lt;font color="#ff0000"&gt;messaggio = "Ciao a tutti";&lt;/font&gt;&lt;br /&gt;} &lt;/strong&gt;&lt;/font&gt; &lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;strong&gt;function parla()&lt;br /&gt;{&lt;br /&gt;   if ( typeof(messaggio) == 'undefined' )&lt;br /&gt;   {&lt;br /&gt;       alert("Messaggio non definito");&lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {          &lt;br /&gt;       alert("Andrea dice: " + messaggio);&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;pensa();&lt;br /&gt;parla();   &lt;font color="#008000"&gt;// output: "Andrea dice: Ciao a tutti"&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;br /&gt;Non utilizzare la parola chiave &lt;strong&gt;var&lt;/strong&gt; all'interno della funzione &lt;em&gt;pensa()&lt;/em&gt;, comporta la creazione di una variabile globale di nome &lt;em&gt;messaggio &lt;/em&gt;la quale sarà quindi accessibile in qualsiasi punto dell'applicazione.&lt;br /&gt;All'interno di &lt;em&gt;pensa()&lt;/em&gt; &lt;em&gt;messaggio&lt;/em&gt; sarà quindi una variabile ben definita e quindi verrà eseguito il ramo else. La sola aggiunta della parola chiave &lt;strong&gt;var&lt;/strong&gt; prima di messaggio avrebbe portato alla visualizzazione di "Messaggio non definito". La parola chiave &lt;strong&gt;var&lt;/strong&gt; quindi deve essere utilizzata per definire variabili locali a una funzione !  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Eliminare degli elementi da un array:&lt;/font&gt;&lt;/strong&gt;  &lt;/p&gt;&lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;strong&gt;colori = [ 'rosso', 'verde', 'blu', 'giallo', 'bianco', 'nero'];&lt;br /&gt;&lt;font color="#ff0000"&gt;delete colori[2];    &lt;br /&gt;delete colori[3];&lt;/font&gt;    &lt;br /&gt;alert( colori );   &lt;font color="#008000"&gt;// output: "rosso,verde,,,bianco,nero"&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;colori = [ 'rosso', 'verde', 'blu', 'giallo', 'bianco', 'nero'];&lt;br /&gt;&lt;font color="#ff0000"&gt;colori.splice(2, 2);&lt;/font&gt;   &lt;br /&gt;alert( colori );   &lt;font color="#008000"&gt;// output: "rosso,verde,bianco,nero"&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;br /&gt;Queste righe di codice mostrano il comportamento delle funzioni &lt;strong&gt;delete&lt;/strong&gt; e &lt;strong&gt;splice&lt;/strong&gt;. La funzione &lt;strong&gt;delete&lt;/strong&gt; rende undefined l'elemento dell'array a cui viene applicata. La funzione &lt;strong&gt;splice&lt;/strong&gt; invece permette di eliminare una porzione di array. Per la precisione il primo parametro di &lt;strong&gt;splice&lt;/strong&gt; rappresenta l'indice del primo elemento da rimuovere mentre il secondo parametro indica quanti elementi rimuovere.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Prototype&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;strong&gt;function Studente(matricola, nome, cognome)&lt;br /&gt;{&lt;br /&gt;    &lt;font color="#008000"&gt;// Costruttore di studente&lt;br /&gt;&lt;/font&gt;    this.matricola = matricola;&lt;br /&gt;    this.nome = nome;&lt;br /&gt;    this.cognome = cognome;&lt;br /&gt;} &lt;/strong&gt;&lt;/font&gt; &lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Studente.prototype.toString&lt;/font&gt; = function()&lt;br /&gt;{&lt;br /&gt;    return this.nome + " " + this.cognome + " matricola numero " + this.matricola;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;alert( &lt;font color="#ff0000"&gt;new Studente(271923, "Andrea", "Angella").toString()&lt;/font&gt; );&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;br /&gt;Studente è una classe. &lt;strong&gt;Prototype&lt;/strong&gt; permette di aggiungere membri e metodi alla definizione di una classe. In questo caso è stato aggiunto il metodo &lt;strong&gt;toString()&lt;/strong&gt; utilizzato per ottenere una rappresentazione sotto forma di stringa dell'oggetto &lt;strong&gt;Studente&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;Ricerca di un elemento all'interno di un array:&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;font face="Courier New" size="3"&gt;&lt;font color="#ff0000"&gt;Array.prototype.find&lt;/font&gt; = function( elem )&lt;br /&gt;{&lt;br /&gt;    var lun = this.length;&lt;br /&gt;    for ( var i=0; i&amp;lt;lun; i++)&lt;br /&gt;    {&lt;br /&gt;        if (this[i] == elem) &lt;br /&gt;        {&lt;br /&gt;            return i;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return -1;&lt;br /&gt;} &lt;/font&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font face="Courier New" size="3"&gt;colori = [ 'rosso', 'verde', 'blu', 'giallo', 'bianco', 'nero']; &lt;/font&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font face="Courier New" size="3"&gt;alert( &lt;font color="#ff0000"&gt;colori.find( 'blu' )&lt;/font&gt; );   &lt;font color="#008000"&gt;// output: "2"&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;br /&gt;Prototype permette anche di aggiungere funzionalità agli oggetti predefiniti del linguaggio. In questo caso è stato aggiunto un metodo &lt;strong&gt;find&lt;/strong&gt; agli Array in modo da ottenere l'indice di un elemento all'interno del vettore (funzione che l'array javascript predefinito non possiede).&lt;/p&gt; &lt;p&gt;&lt;font face="Ver" size="4"&gt;&lt;strong&gt;Realizzazione del ciclo foreach per gli array:&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Array.prototype.foreach&lt;/font&gt; = function( callback )&lt;br /&gt;{&lt;br /&gt;    if ( typeof(callback) != 'function' )&lt;br /&gt;    {&lt;br /&gt;        return;&lt;br /&gt;    }&lt;br /&gt;    var lun = this.length;        &lt;br /&gt;    for(var i=0; i&amp;lt;lun; i++)&lt;br /&gt;    {&lt;br /&gt;        callback( this[i] );&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;colori = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];&lt;br /&gt;var somma = 0; &lt;/strong&gt;&lt;/font&gt; &lt;/p&gt;&lt;p&gt;&lt;font face="Courier New" size="3"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;colori.foreach(&lt;br /&gt;                function( elem )&lt;br /&gt;                {&lt;br /&gt;                   somma += elem;&lt;br /&gt;                }&lt;br /&gt;              );&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;alert("Somma = " + somma);    &lt;font color="#008000"&gt;// output: "Somma = 55"&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;br /&gt;Javascript non possiede il costrutto foreach. Tuttavia la flessibilità del linguaggio offerta da prototype consente di realizzare in modo semplice lo stesso comportamento. Utilizzando prototype definiamo un metodo &lt;strong&gt;foreach()&lt;/strong&gt; che ha come parametro un oggetto funzione il cui scopo sarà quello di effettuare una certa elaborazione su un elemento dell'array. La funzione definita non fà altro che scorrere l'array elemento per elemento e richiamare la &lt;strong&gt;funzione di callback&lt;/strong&gt; specificata dall'utente. Notare quindi che le funzioni in Javascript non sono altro che degli oggetti !&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/angellaa/aggbug/88622.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Angella</dc:creator>
            <guid>http://blogs.ugidotnet.org/angellaa/archive/2007/10/01/88622.aspx</guid>
            <pubDate>Mon, 01 Oct 2007 01:38:38 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/angellaa/archive/2007/10/01/88622.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/angellaa/comments/commentRss/88622.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/angellaa/services/trackbacks/88622.aspx</trackback:ping>
        </item>
    </channel>
</rss>