JavaScript-koden i seg selv må være inneholdt i et objekt. For eksempel, når du lager JavaScript-kode for et nettlesermiljø, er JavaScript inneholdt og utført i vindu
gjenstand. Dette vindu
objekt anses å være "hodeobjektet" eller noen ganger forvirrende referert til som "det globale objektet". Alle implementeringer av JavaScript krever bruk av et enkelt hodeobjekt.
Hodet objektet er satt opp av JavaScript bak kulissene for å inkapslere brukerdefinert kode og å huse den innfødte koden som JavaScript leveres ferdigpakket med. Brukerdefinert kode er plassert av JavaScript inne i hovedenheten for utførelse. La oss bekrefte dette som det gjelder en nettleser.
I følgende eksempel lager jeg noen JavaScript-verdier og verifiserer verdiene er plassert i hodet vindu
gjenstand.
Eksempel: sample64.html
Du bør alltid være oppmerksom på at når du skriver JavaScript, vil den bli skrevet i sammenheng med hovedobjektet. Det gjenværende materialet i dette kapittelet antar at du er klar over at begrepet "hovedobjekt" er synonymt med "globalt objekt".
Hovedobjektet er det høyeste omfanget / konteksten tilgjengelig i et JavaScript-miljø.
JavaScript leveres med noen forhåndsdefinerte funksjoner. Følgende innfødte funksjoner betraktes som metoder for hodeobjektet (som i en nettleser, window.parseInt ( '500')
). Du kan tenke på disse som ferdige funksjoner og metoder (av hodeobjektet) som leveres av JavaScript.
decodeURI ()
decodeURIComponent ()
encodeURI ()
encodeURIComponent ()
eval ()
isFinite ()
isNaN ()
parseFloat ()
parseInt ()
Ikke forveksle hodeobjektet med globale egenskaper eller globale variabler som finnes i det globale omfanget. Hodetobjektet er et objekt som inneholder alle objekter. Begrepet "globale egenskaper" eller "globale variabler" brukes til å referere til verdier som er direkte inneholdt i hovedobjektet og ikke spesifikt scoped til andre objekter. Disse verdiene betraktes som globale fordi uansett hvor koden for tiden utføres, har alle koden tilgang (via omfangskjeden) til disse globale egenskapene og variablene.
I den følgende prøven plasserer jeg en foo
eiendom i det globale omfanget, og få tilgang til denne egenskapen fra et annet omfang.
Eksempel: sample65.html
Hadde jeg plassert foo
eiendom utenfor det globale omfanget, console.log
funksjonen ville returnere udefinert
. Dette er demonstrert i neste kodeeksempel.
Eksempel: sample66.html
I nettlesermiljøet er det derfor globale eiendomsmetoder (for eksempel, window.alert ()
) kan påberopes fra ethvert omfang. Det du trenger å ta bort fra dette er at alt i det globale omfanget er tilgjengelig for noe omfang, og får dermed tittelen på "global variabel" eller "global eiendom".
Det er en liten forskjell mellom å bruke Var
og ikke bruker Var
i det globale omfanget (globale egenskaper vs globale variabler). Ta en titt på denne Stack Overflow-utvekslingen for detaljer: Forskjellen mellom å bruke var og ikke å bruke var i JavaScript.
Det er vanligvis to måter å referere til på hovedobjektet. Den første måten er å bare referere til navnet som er gitt til hodeobjektet (som i en nettleser dette ville være vindu
). Den andre måten er å bruke dette
søkeord i det globale omfanget. Hver av disse er beskrevet i følgende eksempel.
Eksempel: sample67.html
I dette eksemplet lagrer vi eksplisitt en referanse til hodeobjektet i to variabler som deretter brukes til å få tilgang til det globale foo
variabel.
Vanligvis brukes ikke en referanse til hodeobjektet fordi det er underforstått. For eksempel i nettlesermiljøet window.alert
og varsling()
er i det vesentlige samme utsagn. JavaScript fyller i blankene her. Fordi det vindu
objekt (hodeobjektet) er det siste objektet som er sjekket i omfangskæden for en verdi, den vindu
objekt er i hovedsak alltid underforstått. I det neste eksemplet bruker vi varsling()
funksjon som er inneholdt i det globale omfanget.
Eksempel: sample68.html
Forsikre deg om at du forstår at hodetobjektet er underforstått, selv når du ikke eksplisitt inkluderer det, fordi hodelegemet er det siste stoppet i omfangskæden.
Å være eksplisitt (for eksempel, window.alert ()
vs. varsling()
) koster litt mer med hensyn til ytelse (hvor fort koden går). Det er raskere hvis du stole på omfanget av kjeden alene og unngår eksplisitt å referere til hodeobjektet, selv om du vet at eiendommen du vil, finnes i det globale omfanget.