The Head / Global Object

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.


Funzioni globali contenute all'interno dell'oggetto principale

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 ()

L'oggetto principale rispetto alle proprietà globali e alle variabili globali

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.


Riferendosi all'oggetto principale

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.


L'oggetto principale è implicito e in genere non viene referenziato esplicitamente

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

 

Conclusione

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.