Fondamentali Di Javascript: Non Sempre I Metodi Di Base si Usano Nel Modo Corretto

by admin Date: 09-08-2013 javascript metodi script trucchi sviluppo web


Il JavaScript è basicamente un linguaggio semplice che grazie agli sviluppatori continua ad evolvere evolvere mediante l'implementazione di modelli flessibili ed intelligenti.

Tali modelli alimentano le odierne applicazioni web.

Ma a volte, gli svilppatori web, dimenticano, omettono o non usano propriamente alcune semplici tecniche JavaScript che rendono possibili le attività di base.

Di seguito, un elenco delle suddette tecniche:

1.  Metodo string.replace: /g e /i

Una sorpresa per molti neofiti JavaScript è che il metodo string.replace() non sostituisce tutte le occorrenze ma solo la prima. Naturalmente i veterani del JavaScript sanno che per sostuire tutte le occorrenze di una stringa in una frase è sufficente scrivere:

var frase =frase.replace(“parola_da_cercare/g“,”parola_da_sostituire”);

Se volessimo rimuovere tutti gli “a capo” (i new line o \n che dir si voglia) bisogna invece scrivere:

var frase =frase.replace(/\n/g,”parola_da_sostituire”);

Da notare il non utilizzo delle virgolette e l’escape del metacarattere \n (newline)

Ricapitolando:

// Errore  
var str = "David is an Arsenal fan, which means David is great";  
str.replace("David", "Darren"); 
// "Darren is an Arsenal fan, which means David is great"    

// Risultato desiderato
str.replace(/David/g, "Darren"); // "Darren is an Arsenal fan, which means Darren is great"

Valutate anche la possiblitá di trovarsi di fronte a parole maiuscole o minuscole, e di utilizzare, pertanto il flag /i.

str.replace(/david/gi, "Darren") 
// "Darren will always be an Arsenal fan, which means Darren will always be great"

2.  Array come Oggetti ed Array.prototype.slice

Metodo slice serve principalmente per catturare dei segmenti di un array. Quello che molti sviluppatori non sanno è che il segmento può essere utilizzato per trasformare gli Oggetti Array in argomenti,e i NodeLists e gli attributi in veri array di dati:

var nodesArr = Array.prototype.slice.call(document.querySelectorAll("div")); 
// "true" array of DIVs    
var argsArr = Array.prototype.slice.call(arguments); 
// changes arguments to "true" array

È anche possibile clonare un array usando slice:

var clone = myArray.slice(0); // naive clone

3.  Array.prototype.sort

Il metodo Array .sort è ampiamente sottovalutato e poco utilizzato dalla maggior parte degli sviluppatori, oltre ad essere uno strumento alquanto potente.

L'uso comune è:

[1, 3, 9, 2].sort();      
// Returns: [1, 2, 3, 9]

ma esistono alternative interessanti:

[     
{ name: "Robin Van PurseStrings", age: 30 },      
{ name: "Theo Walcott", age: 24 },      
{ name: "Bacary Sagna", age: 28  }  
]
.sort(function(obj1, obj2) {      
// Ascending: first age less than the previous      
return obj1.age - obj2.age;  });      
// Returns:        
// [      
//    { name: "Theo Walcott", age: 24 },      
//    { name: "Bacary Sagna", age: 28  },      
//    { name: "Robin Van PurseStrings", age: 30 }      
// ]

Ovvero: é possibile ordinare gli oggetti a partire dalla loro proprietà.

4.  Utilizzare array.length per troncare (errore!)

Il metodo array.lenght serve per conoscere la lunghezza di un array. Spesso gli sviluppatori cercano di svuotare un array ma erroneamente ne creano uno nuovo:

var myArray = yourArray = [1, 2, 3];    
// :( 
 myArray = []; // "yourArray" is still [1, 2, 3]    
// The right way, keeping reference  

myArray.length = 0; // "yourArray" and "myArray" both []

Cercate invece di usare il metodo .splice

var a = ['apple', 'mango', 'rocket', 'moon', 'tiger'];
var b = a.splice(2); // Assigning to a variable is not mandatory
console.log(a);
// ["apple", "mango"]

5.  Unire gli Array con il metodo push

Il metodo push aggiunge nuovi elementi a una matrice e restituisce la nuova lunghezza della matrice. Il metodo push aggiunge elementi nell'ordine in cui vengono riportati. Se uno degli argomenti è una matrice, verrà aggiunto come elemento singolo. Si puó utilizzare il metodo concat per unire gli elementi di due o più matrici.

Ma anche:

var mergeTo = [4,5,6],  
var mergeFrom = [7,8,9];    
Array.prototype.push.apply(mergeTo, mergeFrom);    
mergeTo; // is: [4, 5, 6, 7, 8, 9]

6. Efficienza/Rivelare la propietá di un Oggetto

Spesso gli sviluppatori utilizzano la seguente tecnica per rilevare una proprietà del browser:

if(navigator.geolocation) {      
// Do some stuff  
}

Questo frammento di codice puó causare perdite di memoria in alcuni browser. La scelta migliore consiste nell'optare per il controllo di una chiave all'interno di un oggetto:

if("geolocation" in navigator) {      
// Do some stuff  
}

 

 

 

 
by admin Date: 09-08-2013 javascript metodi script trucchi sviluppo web visite : 2612  
 
 
 
 

Articoli correlati