Abbiamo analizzato le caratteristiche essenziali JavaScript come linguaggio di programmazione, senza tener conto degli ambiti in cui lo utilizziamo. Tipicamente i nostri progetti sono eseguiti all'interno sistemi ospite con i quali interagire grazie a insiemi di oggetti che espongono interfacce standard, meglio note come API.
Se l'ambito principale e più noto è quello Web, in cui il sistema ospite è il browser, è vero che possiamo utilizzare JavaScript anche in ambienti diversi e che possiamo interfacciarci con ciascuno grazie alle relative API. Per farci un'idea basta riflettere sul ruolo che ha questo linguaggio nel mobile e nei servizi lato server.
In questa sezione esploreremo quindi le principali API che consentono a JavaScript di interagire con l'ambiente che lo ospita, iniziando dal Web.
Le Browser API
Come abbiamo già accennato all'inizio della guida, possiamo inserire i nostri script nelle pagine HTML, per gestirne gli elementi e modificarli anche in base a sollecitazioni che vengono dall'utente. Tutto ciò all'interno del browser.
L'interazione con il browser viene realizzata tramite un'API che, grazie ad alcuni oggetti, consente di acquisire informazioni sull'ambiente di esecuzione, di usufruire di alcune funzionalità e di effettuare specifiche impostazioni.
Anche se non esiste uno standard ufficiale (solo con HTML5 si stanno definendo delle specifiche comuni), la maggior parte dei browser espone un'interfaccia comune gestibile via JavaScript. Esaminiamone gli oggetti principali.
L'oggetto window
L'oggetto principale per l'interazione con il browser è window: esso rappresenta una finestra che contiene un documento HTML. Quindi ciascuna finestra o tab ha associato un proprio oggetto window
e, allo stesso modo, a ciascun frame definito in una pagina HTML corrisponde un oggetto window
.
Questo oggetto, oltre ad identificare l'elemento visivo del browser, rappresenta anche il contesto di esecuzione globale per JavaScript, cioè l'oggetto all'interno del quale vengono definite variabili e funzioni globali. Esso è inoltre l'oggetto associato alla parola chiave this
quando non esiste un contesto specifico.
Qualsiasi variabile o funzione definita nel contesto globale diventa di fatto proprietà o metodo dell'oggetto window
. Quindi, ad esempio, date le seguenti definizioni:
var x = 123;
function somma(a, b) {
return a + b;
}
possiamo accedere ad esse, nell'esecuzione del codice all'interno di un browser, sia direttamente che come proprietà dell'oggetto window
o dell'oggetto this
:
console.log(x);
console.log(somma(3, 5));
console.log(window.x);
console.log(window.somma(3, 5));
console.log(this.x);
console.log(this.somma(3, 5));
Per lo stesso principio, qualsiasi proprietà o metodo dell'oggetto window
è accessibile anche senza fare un riferimento esplicito all'oggetto. Quindi window.metodo()
è equivalente alla semplice chiamata metodo()
.