In questo breve articolo (ultimo facente della prima sezione introduttiva e teorica su ExtJs) introdurremo un insieme di funzionalità che Ext porta con sé che estendono il linguaggio JavaScript permettendo sia agli sviluppatori di Ext sia a noi di ovviare ad alcune mancanze del linguaggio base.
Queste utilità si differenziano in due grandi gruppi: funzionalità strettamente collegate ad una determinata classe JavaScript (come ad esempio le funzioni per la formattazione di una data o per l'alterazione del comportamento di una funzione) e funzionalità più generiche come ad esempio la possibilità di estendere classi e componenti di ExtJs o di identificare il browser utilizzato dall'utente.
La prima serie di funzioni rappresenta una vera e propria estensione al linguaggio base in quanto queste ultime vengono, grazie alla dinamicità di JavaScript, incorporate all'interno delle classi native come ad esempio Date
, Function
, Array
mentre il secondo gruppo appartiene più strettamente al framework tant'è che le sue funzionalità possono essere utilizzate accedendo staticamente all'oggetto Ext
.
L'oggetto Ext
L'oggetto Ext
espone una serie di funzioni e proprietà che possono facilitare lo sviluppo di componenti personalizzati. Le proprie funzionalità possono essere raggruppate in gruppi:
- browser sniffing
is*
Ext.isWindows
Ext.isLinux
Ext.isOpera
Ext.isStrict
- iterative
Ext.apply
Ext.applyIf()
Ext.clean()
Ext.copyTo()
Ext.each()
Ext.invoke()
Ext.iterate()
- introspezione
Ext.isArray()
Ext.isDefined()
Ext.isEmpty()
Ext.isObject()
Ext.isPrimitive()
- shorthand
Ext
Ext.encode()
Ext.getCmp()
Ext.preg()
Ext.reg()
- object-orientation
Ext.override()
Ext.extend()
Ext.ns()
Il miglior modo per approfondire queste funzioni e il loro utilizzo rimane la documentazione ufficiale del framework.
Le estensioni a JavaScript
Oltre a definire l'oggetto Ext
, il framework implementa alcune funzionalità di base (spesso quasi vitali e stranamente non presenti) iniettandole direttamente nella classe di riferimento. Grazie ad ExtJs avremo per esempio a disposizione metodi (spesso ritenuti ovvi in altri linguaggi di programmazione) come String.trim()
, Array.indexOf()
e Array.remove()
.
Gli sviluppatori hanno però puntato l'attenzione sulle estensioni di due particolari oggetti cari agli sviluppato di JavasScript: Date
e Function
. Per i più curiosi rimando, come prassi, alla documentazione ufficiale.
Le nuove API di Date
L'oggetto Date
ha sempre rappresentato un ostacolo per tutti gli sviluppatori JavaScript per la sua poca coerenza, poca documentazione e scarsità di metodi esposti. Gli sviluppatori di ExtJs hanno davvero fatto un ottimo lavoro in questo senso perchè sono riusciti a implementare praticamente qualsiasi tipo di funzione possa essere richiamata partendo da un oggetto Date
.
Grazie a questa estensione è infatti possibile:
- formattare (da
Date
String
String
Date
- eseguire calcoli e controlli sulle date (
add
remove
between
- ottenere informazioni spesso difficili da calcolare (
isLeapYear()
getLastDateOfMonth()
Le nuove API di Function
Grazie a questo set di estensioni è possibile controllare il normale flusso di esecuzione delle funzioni da noi definite. Queste API nonostante possano inizialmente sembrare banali e inutili, hanno un'importanza vitale in architetture di notevole dimensione. Ecco l'elenco dei metodi esposti:
- callback(args)
- createDelegate(scope, args, appendArgs)
- defer(millis,scope, args, appendArgs)
- createSequence(function, scope)
- createInterceptor(function,scope)