Il costruttore Hash è una delle classi native non-standard introdotta da MooTools. Le sue funzionalità permettono di superare i limiti imposti dal costruttore Object del Javascript nativo (ricordate, MAI toccare l'oggetto Object.prototype, per questo è nato l'oggetto Hash.prototype!) e "mappare" quindi un normale oggetto.
Immaginate un Hash come una sorta di array sul quale è possibile iterare e compiere tutte quelle interessanti operazioni di estensione e combinamento, ma al posto di indici e valori abbiamo le accoppiate keyword e value tipiche degli oggetti.
La classe Hash accetta un solo parametro che è l'oggetto (o un altro Hash) da mappare e ne restituisce l'istanza. Con quest'ultima possiamo compiere le più svariate operazioni: dai semplici setting e getting di proprietà e valori fino alle diverse iterazioni. Vediamo un esempio:
// creiamo un Hash
var hash = new Hash({
color: 'blue',
getColor: function() {
return this.color;
}
});
// usiamo i suoi metodi
// true, esiste la proprietà color
hash.has('color');
// setta una nuova proprietà
hash.set('otherColor', 'green');
// ottieni le keywords
var keys = hash.getKeys();
// ottieni i valori
var values = hash.getValues();
Ed ora passiamo alle iterazioni (i metodi each e map sono davvero molto simili ai rispettivi offerti dalla classe Array):
// creriamo un nuovo Hash
var hash = new Hash({first: 'red', second: 'blue', third: 'green'});
// effettua gli alert per ogni elemento: 'The first is red', 'The second is blue' e cosi via
hash.each(function(value, key){
alert('The ' key + " is: " + value);
});
// operazione di "mapping" su di un nuovo hash
var double = new Hash({a: 1, b: 2, c: 3}).map(function(item, index){
return item * 2;
});
// double è ora uguale a {a: 2, b: 4, c: 6}
Da questi esempi risulta chiaro come sia semplice iterare ed alterare la struttura di un Hash, come se si trattasse di un array "speciale".
Sono molti gli hash usati internamente a MooTools per adempiere ai più svariati compiti, data la loro elevata flessibilità. Gli Hash Element.Properties, Element.Attributes, Element.Events ed Element.Styles controllano le varie caratteristiche degli elementi, mentre l'Hash Browser permette di identificare, tramite la sua proprietà "Engine" il browser correntemente in uso. Ancora troviamo l'Hash Selectors.Pseudo che permette di creare selettori personalizzati, l'Hash JSON e molti altri ancora.
Come abbiamo potuto vedere, lavorare e iterare su di un oggetto non è più impossibile o complicato, grazie alla classe Hash. Non dimentichiamo inoltre che l'oggetto prototype di Hash contiene molti altri metodi utilissimi oltre a quelli presentati in questa lezione: extend, combine, filter ed every (simili ai cicli di iterazione studiati nella lezione dedicata al costruttore Array) e altri ancora. Ecco a voi il link alla pagina della documentazione ufficiale dove potete trovare la lista completa.
PhantomJS, headless browser per test con JavascriptIl tool ideale per realizzare, da terminale, operazioni in remoto su... |
Creare e leggere QR Code in JavaScriptApplicazioni 'QR Code enabled' per il Web e per il mobile,... |
Jquery UI Map: web-mapping con Google Maps e jQueryUn plugin di jQuery UI per intefacciare applicaizoni Web/mobile con... |
Scrollorama e Scrolldeck, slideshow d'effetto con jQueryPlugin jQuery per ottenere Slideshow con diversi effetti di scrolling |
jCanvas, un primo semplice graficoAlla scoperta della libreria jCanvas, per semplificare il disegno e... |
Guida Node.jsIl framework che permette di per usare V8, l'interprete JavaScript... |
Canvas, guida ai frameworkCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida Javascript: tecniche avanzateUna guida dal taglio pratico per approfondire la programmazione a... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso JQuery e Ajax per Webmaster03 Luglio 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |