Oggetto global in Javascript

Concetti Chiave
  • L'oggetto globale in Javascript è un normale oggetto che contiene le proprietà globali accessibili in tutto il codice.
  • In Node.js, l'oggetto globale è accessibile tramite la proprietà global.
  • Nei browser, l'oggetto globale è l'oggetto Window, che contiene le proprietà globali e altre specifiche del browser.
  • ES2020 introduce globalThis come un modo standard per accedere all'oggetto globale in qualsiasi contesto.
  • Le proprietà dell'oggetto globale includono costanti come undefined, Infinity, e NaN, funzioni globali come isNaN() e parseInt(), e oggetti come Math e JSON.
  • Le proprietà globali non sono parole riservate, ma dovrebbero essere trattate come tali per evitare conflitti con il codice esistente.
  • L'oggetto globale è fondamentale per la definizione di identificatori globali disponibili in un programma JavaScript.

L'Oggetto global

Le lezioni precedenti hanno spiegato i tipi primitivi e i valori di JavaScript. I tipi oggetto, oggetti, array e funzioni, saranno trattati in lezioni dedicate più avanti. Ma c'è un valore oggetto molto importante che si deve coprire ora. L'oggetto globale è un normale oggetto JavaScript che serve a uno scopo molto importante: le proprietà di questo oggetto sono gli identificatori definiti globalmente che sono disponibili a un programma JavaScript. Quando l'interprete JavaScript si avvia (o ogni volta che un browser web carica una nuova pagina), crea un nuovo oggetto globale e gli assegna un insieme iniziale di proprietà che definiscono:

  • Costanti globali come undefined, Infinity, e NaN
  • Funzioni globali come isNaN(), parseInt(), e eval()
  • Funzioni costruttrici come Date(), RegExp(), String(), Object(), e Array()
  • Oggetti globali come Math e JSON

Le proprietà iniziali dell'oggetto globale non sono parole riservate, ma meritano di essere trattate come se lo fossero.

In Node.js, l'oggetto globale ha una proprietà chiamata global il cui valore è l'oggetto globale stesso, quindi è sempre possibile riferirsi all'oggetto globale con il nome global nei programmi Node.

Nei browser web, l'oggetto Window serve come oggetto globale per tutto il codice JavaScript contenuto nella finestra del browser che rappresenta. Questo oggetto Window globale ha una proprietà auto-referenziale window che può essere utilizzata per riferirsi all'oggetto globale. L'oggetto Window definisce le proprietà globali principali, ma definisce anche molte altre globali che sono specifiche per i browser web e JavaScript lato client. I thread dei web worker hanno un oggetto globale diverso dalla Window con cui sono associati. Il codice in un worker può riferirsi al suo oggetto globale come self.

ES2020 finalmente definisce globalThis come il modo standard per riferirsi all'oggetto globale in qualsiasi contesto.