Il codice JavaScript stesso deve essere contenuto in un oggetto. Ad esempio, quando si crea codice JavaScript per un ambiente di browser Web, JavaScript è contenuto ed eseguito all'interno di finestra
oggetto. Questo finestra
l'oggetto è considerato come "l'oggetto principale" o talvolta definito in modo confusivo come "l'oggetto globale". Tutte le implementazioni di JavaScript richiedono l'uso di un oggetto a testa singola.
L'oggetto principale è impostato da JavaScript dietro le quinte per incapsulare il codice definito dall'utente e per ospitare il codice nativo con cui JavaScript viene preconfezionato. Il codice definito dall'utente viene inserito da JavaScript all'interno dell'oggetto principale per l'esecuzione. Cerchiamo di verificare ciò che riguarda un browser web.
Nel seguente esempio, sto creando alcuni valori JavaScript e verificando che i valori siano posizionati nella testa finestra
oggetto.
Esempio: sample64.html
Dovresti sempre essere consapevole che quando scrivi JavaScript, verrà scritto nel contesto dell'oggetto principale. Il materiale rimanente in questo capitolo presuppone che tu sappia che il termine "oggetto principale" è sinonimo di "oggetto globale".
L'oggetto principale è lo scope / contesto più alto disponibile in un ambiente JavaScript.
JavaScript viene fornito con alcune funzioni predefinite. Le seguenti funzioni native sono considerate metodi dell'oggetto principale (come in un browser web, window.parseInt ( '500')
). Puoi pensare a questi come funzioni e metodi pronti all'uso (dell'oggetto principale) forniti da JavaScript.
decodeURI ()
decodeURIComponent ()
encodeURI ()
encodeURIComponent ()
eval ()
isFinite ()
isNaN ()
parseFloat ()
parseInt ()
Non confondere l'oggetto principale con proprietà globali o variabili globali contenute nell'ambito globale. L'oggetto principale è un oggetto che contiene tutti gli oggetti. Il termine "proprietà globali" o "variabili globali" è usato per riferirsi a valori direttamente contenuti all'interno dell'oggetto principale e non sono specificatamente orientati ad altri oggetti. Questi valori sono considerati globali poiché non importa dove il codice è attualmente in esecuzione, in termini di ambito, tutto il codice ha accesso (tramite la catena di portata) a queste proprietà e variabili globali.
Nel seguente esempio, metto a foo
proprietà nell'ambito globale, quindi accedere a questa proprietà da un ambito diverso.
Esempio: sample65.html
Avevo messo il foo
proprietà al di fuori dell'ambito globale, il console.log
la funzione ritornerebbe non definito
. Questo è dimostrato nel prossimo esempio di codice.
Esempio: sample66.html
Nell'ambiente del browser, questo è il motivo per cui i metodi di proprietà globali (ad esempio, window.alert ()
) può essere invocato da qualsiasi ambito. Ciò che è necessario rimuovere da questo è che qualsiasi cosa nell'ambito globale è disponibile per qualsiasi ambito e ottiene quindi il titolo di "variabile globale" o "proprietà globale".
C'è una leggera differenza tra l'utilizzo var
e non usare var
nell'ambito globale (proprietà globali e variabili globali). Dai un'occhiata a questo scambio Stack Overflow per i dettagli: Differenza tra l'utilizzo di var e non l'uso di var in JavaScript.
Esistono in genere due modi per fare riferimento all'oggetto principale. Il primo modo è di fare semplicemente riferimento al nome dato all'oggetto head (come in un browser web sarebbe finestra
). Il secondo modo è usare il Questo
parola chiave nell'ambito globale. Ognuno di questi è dettagliato nel seguente esempio.
Esempio: sample67.html
In questo esempio, memorizziamo esplicitamente un riferimento all'oggetto head in due variabili che vengono quindi utilizzate per accedere al globale foo
variabile.
In genere un riferimento all'oggetto principale non viene utilizzato perché è implicito. Ad esempio, nell'ambiente del browser window.alert
e mettere in guardia()
sono essenzialmente la stessa affermazione. JavaScript riempie gli spazi vuoti qui. Perché il finestra
oggetto (l'oggetto principale) è l'ultimo oggetto controllato nella catena dell'ambito per un valore, il finestra
l'oggetto è essenzialmente sempre implicito. Nel prossimo esempio, sfruttiamo il mettere in guardia()
funzione che è contenuta nello scope globale.
Esempio: sample68.html
Assicurati di aver compreso che l'oggetto principale è implicito anche quando non lo includi esplicitamente, perché l'oggetto principale è l'ultimo arresto nella catena dell'ambito.
Essere espliciti (per esempio, window.alert ()
vs. mettere in guardia()
) costa un po 'di più in termini di prestazioni (la velocità con cui il codice viene eseguito). È più veloce se fai affidamento sulla sola catena di ambito ed evita di fare esplicitamente riferimento all'oggetto principale anche se sai che la proprietà che desideri è contenuta nello scope globale.