Oggetti in Javascript

Transcript

Oggetti in Javascript
Oggetti in Javascript
Un oggetto in JavaScript è una collezione di valori1 con nome (named values); si fa riferimento a
una proprietà di un oggetto con uso di “dot notation”: il nome dell’oggetto seguito dal punto (.) e
dal nome della proprietà. Ad esempio immagine.altezza oppure immagine.larghezza
Se un oggetto contiene una funzione, allora la funzione prende il nome di metodo dell’oggetto ed il
nome della proprietà diventa il nome del metodo. Una variabile è fondamentalmente la stessa cosa
di una proprietà di un oggetto
Le principali famiglie di oggetti in Javascript:




“Riflessi” da HTML (creati automaticamente dal browser per ogni elemento di un documento
HTML)
Interni o integrati (non legati al browser né al documento HTML: Array, String, Date, Math)
Browser-dipendenti2 (detti oggetti Navigator, “riflessi” dall’ambiente del browser)
Definiti dall’utente richiedono:
 prima la definizione di una classe cioè una famiglia di oggetti con le stesse caratteristiche o
attributi e comportamenti o metodi tra i quali il costruttore che servirà ad inizializzare i
valori degli attributi
 poi la creazione (istanza della classe con occupazione di memoria) con operatore new
L’oggetto globale
Quando l’interprete JavaScript va in esecuzione una delle prime cose che fa è creare un oggetto
globale.Le proprietà di questo oggetto globale sono le variabili dichiarate all’interno di programmi
JavaScript.
Quando si dichiara una variabile (var) si sta definendo una proprietà dell’oggetto globale;
l’interprete JavaScript inizializza questo oggetto con altri valori e funzioni predefinite.
Per far riferimento a questo oggetto in codice JavaScript che non fa parte di funzioni possiamo
usare la parola chiave this. All’interno di funzioni, this ha un significato differente (è un riferimento
all’oggetto corrente).

In JavaScript lato client l’oggetto Window serve da oggetto globale: è il padre della gerarchia
che contiene document (che contiene oggetti “riflessi” da HTML quali link, … image e form
che è contenitore di elements quali text, button etc…). Ogni discendente è una proprietà
dell’antenato.
 Per far riferimento a this – inteso come oggetto globale - possiamo usare la proprietà autoreferenziale window dell’oggetto globale Window
Fra gli utilizzi maggiori di JavaScript ci sono il controllo della visualizzazione di pagine HTML, la
creazione dell'interfaccia per l'inserimento dei dati e la verifica delle scelte fatte dell'utente.
Esistono quindi diversi oggetti, metodi e proprietà per creare tali script. La prima necessità per
utilizzare facilmente gli oggetti in qualsiasi linguaggio, è quella di capirne la struttura, in modo da
aver ben chiari i vari livelli gerarchici e i legami tra i diversi livelli.
1
Una specie di struttura in C: insieme di elementi eterogenei.
Oggetti “di livello massimo” nella gerarchia degli oggetti JavaScript: Window, document, location, navigator e
history
2
Oggetti JavaScript
Quando programmate con JavaScript dovete immaginare che la pagina HTML sia formata da vari
elementi in varia relazione fra loro. Il browser infatti (con all'interno il documento HTML) può
essere infatti "sezionato" in vari elementi:

prima di tutto c'è il browser stesso (l'oggetto navigator)

poi la finestra che contiene tutto quanto (l'oggetto window)

eventuali frames (l'oggetto window.frames)

il documento HTML vero e proprio (document)

i moduli per raccogliere l'input dell'utente (document.forms["nomeForm"])

le immagini (document.images["nomeImmagine"])

i cookie (document.cookie["nomeCookie"])

i livelli

le applet (document.applets["nomeApplet"])

la barra degli indirizzi (location)

la barra di stato, nella parte bassa del browser (status) e via di seguito.
Tutti gli oggetti che vediamo nel browser sono in relazione gerarchica fra di loro (ci sono elementipadre ed elementi-figli) e tramite JavaScript - utilizzando la corretta sintassi - è possibile interrogare
questi elementi, leggerne le proprietà e in taluni casi anche cambiare il valore di queste proprietà.
Una pagina, anche vuota, possiede almeno due oggetti fondamentali:


Navigator: contiene proprietà per il nome e la versione di Navigator (browser) utilizzata,
per i tipi MIME supportati ed i plug-in installati;
Window: è la finestra del browser con una serie di proprietà e metodi che si applicano alla
intera finestra; è l’oggetto di più alto livello per ogni finestra in un documento a frame
Alcuni di questi oggetti possono contenerne altri che a loro volta possono contenerne altri,
sempre in forma gerarchica dal padre al figlio.
Ogni pagina può contenere i seguenti oggetti:

document: contiene proprietà basate su valori globali del documento come titolo, colore di
background, collegamenti e forms.
 location: contiene proprietà basate sull’URL corrente;
 history: contiene proprietà circa gli URL che il browser ha richiesto in precedenza.
A seconda del contenuto, poi, un documento potrà avere altre proprietà, ad esempio tanti
oggetti di tipo form per ogni corrispondente form nella pagina.
Lo schema gerarchico è il seguente:
Come si può osservare, la struttura degli oggetti di JavaScript, per costruire una pagina Web, parte
dai due oggetti fondamentali per poi strutturarsi a più livelli.
L'oggetto Navigator è il più semplice avendo una struttura con solo due oggetti figli che sono
rispettivamente l'oggetto Plugin e MimeType.
La struttura si complica per l'oggetto window anche perchè alcuni suoi oggetti figli possono
contenere oggetti di tipo padre.
Un esempio sono i frame che sono simili alle finestre e possono a loro volta contenere altri frame e
cosi via, fino a ottenere una struttura molto complessa.
La creazione di script passa attraverso la conoscenza di questa struttura gerarchica perchè un
oggetto fa riferimento a quello di livello precedente; ad esempio, un pulsante sarà gerarchicamente
così definito:
window.document.form.button
anche se spesso si possono tralasciare i primi due oggetti: si possono sottintendere i primi due
oggetti quando sono univocamente definiti nella struttura dello script.
Alcuni oggetti sono realizzabili utilizzando semplici tag HTML, ma per un uso più approfondito e
versatile bisogna utilizzare comandi JavaScript; ad esempio, per il caricamento dei frame è possibile
utilizzare i tag ma si può caricare un solo frame per volta, mentre con le istruzioni è possibile
cambiare tutti i frame presenti nella pagina.
La struttura completa dell'oggetto window:
Oggetti di tipo frame e window
L’oggetto window è il padre di tutti gli oggetti del browser. È possibile creare finestre multiple
anche sfruttando i comandi di JavaScript. Gli oggetti di tipo frame, definiti dai tag FRAME, hanno
le stesse proprietà di quelli di tipo window e differiscono solo nel modo in cui sono visualizzati.
Gli oggetti window hanno numerosi metodi utili tra cui:
 open e close: apre e chiude una finestra. Si può specificare la dimensione della finestra, il suo
contenuto e la presenza di vari attributi quali la barra dei pulsanti.
 alert: visualizza una finestra di avvertimento con un messaggio specificato dall’utente.
 confirm: visualizza una finestra di conferma con i pulsanti OK e CANCEL.
 prompt: visualizza un dialog box con un campo per l’inserimento di un valore.
 blur e focus: rimuove il fuoco o da il fuoco ad una finestra.
 scroll: sposta una finestra alla coordinate specificate.
 setTimeout: valuta una espressione dopo un tempo specificato.
Due utili proprietà sono invece location e status. La prima serve a ridirigere il browser verso un
altro URL mentre la seconda consente di scrivere sulla barra di stato che è presente nella
maggioranza dei browser.
Oggetti di tipo document
L’oggetto document è uno dei più importanti in quanto dispone dei metodi write e writeln che
consentono di scrivere sulla pagina HTML. Ogni pagina ha un solo oggetto document che contiene
tutta una serie di proprietà riguardanti i colori del background, del testo, dei link: bgColor, fgColor,
linkColor. La proprietà lastModified contiene la data dell’ultima modifica alla pagina, referrer
l’URL precedentemente visitato e URL contiene l’URL del documento.
Oggetti di tipo Form
Ogni oggetto FORM nel documento crea un oggetto di tipo Form. Oltre che con il nome, è possibile
accedere alle form usando l’array forms, che è una proprietà dell’oggetto document. Esso contiene
in ordine tutte le form presenti nella pagina, dalla prima (document.forms[0]) all’ultima. Allo stesso
modo i vari elementi di una form come campi testi, radio button, ecc., possono essere riferiti
utilizzando il campo array elements della form a cui appartengono. Ad esempio,
document.forms[0].elements[0] rappresenta il primo oggetto della prima form di un documento.
Ogni elemento di una form ha poi una proprietà form che è un riferimento all’oggetto padre.
Oggetto location
L’oggetto location ha proprietà basate sull’URL corrente. Per esempio hostname è il nome
(comprensivo di dominio) del server che contiene la pagina HTML
 reload: forza il ricarimento della pagina nella finestra corrente
 replace: mette l’URL specificata sopra la posizione corrente della history.
Oggetto history
L’oggetto history contiene una lista di stringhe rappresentante gli URL che il browser ha visitato. È
possibile accedere all’URL corrente, successivo e precedente tramite le proprietà current, next e
previous. Gli altri valori sono accessibili tramite l’array history. È possibile inoltre dirigere il
browser verso una precisa entry dell’history tramite il metodo go. Ad esempio history.go(-2) carica
la pagina che è due posizioni indietro nella history mentre history.go(0) ricarica la pagina corrente.
Oggetto navigator
L’oggetto navigator contiene informazioni circa la versione di Navigator in uso. Per esempio la
proprietà appName specifica il nome del browser mentre appVersion contiene la sua versione. Il
metodo javaEnabled consente invece di sapere se Java è abilitato.
Per approfondire:
oggetto Navigatore – Navigator
oggetto Navigatore – Document
oggetto Navigatore – Location
oggetto Navigatore – History
oggetto Navigatore – Form