Het hoofd / globaal object

JavaScript-code zelf moet zich binnen een object bevinden. Wanneer JavaScript-code bijvoorbeeld wordt gemaakt voor een webbrowseromgeving, wordt JavaScript ingesloten en uitgevoerd in de venster voorwerp. Deze venster object wordt beschouwd als het 'hoofdobject' of soms verwarrend 'het globale object'. Voor alle implementaties van JavaScript is het gebruik van een object met één kop vereist.

Het hoofdobject wordt achter de schermen door JavaScript ingesteld om door de gebruiker gedefinieerde code in te pakken en de oorspronkelijke code te bevatten waarmee JavaScript voorverpakt wordt geleverd. Door de gebruiker gedefinieerde code wordt geplaatst door JavaScript in het hoofd-object voor uitvoering. Laten we dit verifiëren als het betrekking heeft op een webbrowser.

In het volgende voorbeeld maak ik een aantal JavaScript-waarden en controleer ik of de waarden in de kop zijn geplaatst venster voorwerp.

Voorbeeld: sample64.html

 

Houd er rekening mee dat wanneer u JavaScript schrijft, dit wordt geschreven in de context van het hoofdobject. Het resterende materiaal in dit hoofdstuk gaat ervan uit dat u zich ervan bewust bent dat de term 'hoofdobject' synoniem is met 'globaal object'.

Het hoofdobject is de hoogste scope / context die beschikbaar is in een JavaScript-omgeving.


Wereldwijde functies die zich binnen het hoofdobject bevinden

JavaScript wordt geleverd met een aantal vooraf gedefinieerde functies. De volgende native-functies worden beschouwd als methoden van het hoofd-object (zoals in een webbrowser, window.parseInt (500)). U kunt deze beschouwen als kant-en-klare functies en methoden (van het hoofd-object) die door JavaScript worden geleverd.

  • decodeURI ()
  • decodeURIComponent ()
  • encodeURI ()
  • encodeURIComponent ()
  • eval ()
  • isFinite ()
  • isNaN ()
  • parseFloat ()
  • parseInt ()

Het hoofdobject versus globale eigenschappen en globale variabelen

Verwar het hoofdobject niet met globale eigenschappen of globale variabelen binnen de globale scope. Het hoofdobject is een object dat alle objecten bevat. De term 'globale eigenschappen' of 'globale variabelen' wordt gebruikt om te verwijzen naar waarden die direct in het hoofdobject zijn opgenomen en zijn niet specifiek toegespitst op andere objecten. Deze waarden worden als globaal beschouwd, ongeacht waar de code momenteel wordt uitgevoerd, in termen van bereik heeft alle code toegang (via de bereikketen) tot deze globale eigenschappen en variabelen.

In het volgende voorbeeld plaats ik een foo property in de globale scope en vervolgens toegang tot deze eigenschap vanuit een ander bereik.

Voorbeeld: sample65.html

 

Had ik de foo eigendom buiten het bereik van de wereld, de console.log functie zou terugkeren onbepaald. Dit wordt aangetoond in het volgende codevoorbeeld.

Voorbeeld: sample66.html

 

In de browseromgeving is dit de reden waarom wereldwijde vastgoedmethoden (bijvoorbeeld, window.alert ()) kan vanuit elk bereik worden opgeroepen. Wat u hierbij moet afleggen, is dat alles in de globale scope beschikbaar is voor elke scope en daarmee de titel "global variable" of "global property" krijgt.

Er is een klein verschil tussen het gebruik var en niet gebruiken var in de globale scope (globale eigenschappen versus globale variabelen). Bekijk deze Stack Overflow-uitwisseling voor meer informatie: Verschil tussen het gebruik van var en het gebruik van var in JavaScript.


Verwijzend naar het hoofdobject

Er zijn meestal twee manieren om naar het hoofdobject te verwijzen. De eerste manier is om simpelweg naar de naam van het hoofdobject te verwijzen (zoals in een webbrowser venster). De tweede manier is om de deze sleutelwoord in de globale reikwijdte. Elk van deze wordt gedetailleerd beschreven in het volgende voorbeeld.

Voorbeeld: sample67.html

 

In dit voorbeeld slaan we expliciet een verwijzing naar het hoofdobject op in twee variabelen die vervolgens worden gebruikt om toegang te krijgen tot het globale foo veranderlijk.


Het hoofdobject is expliciet en impliciet niet expliciet verwezen

Meestal wordt een verwijzing naar het hoofdobject niet gebruikt omdat dit impliciet is. Bijvoorbeeld in de browseromgeving window.alert en alert () zijn in wezen dezelfde verklaring. JavaScript vult hier de lege plekken in. Omdat het venster object (het hoofdobject) is het laatste object dat in de bereikketen voor een waarde is gecontroleerd, de venster object wordt in essentie altijd geïmpliceerd. In het volgende voorbeeld gebruiken we de alert () functie die is opgenomen in de globale scope.

Voorbeeld: sample68.html

 

Conclusie

Zorg ervoor dat u begrijpt dat het hoofd-object wordt geïmpliceerd, zelfs wanneer u het niet expliciet opneemt, omdat het hoofd-object de laatste stop is in de bereikketen.

Expliciet zijn (bijvoorbeeld, window.alert () vs. alert ()) kost een beetje meer met betrekking tot de prestaties (hoe snel de code werkt). Het is sneller als u alleen op de scope-keten vertrouwt en vermijdt expliciet te verwijzen naar het head-object, zelfs als u weet dat de property die u zoekt in de globale scope is opgenomen.