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