Gjenstand()

Ved å bruke den innebygde Object () -konstruktørfunksjonen, kan vi lage generiske tomme objekter på fluen. Faktisk, hvis du husker tilbake til begynnelsen av kapittel 1, er dette akkurat det vi gjorde ved å lage cody-objektet. Lar gjenopprette cody-objektet.

Eksempel: sample69.html

 

Her er alt vi gjør, bruker Gjenstand() constructor funksjon for å lage et generisk objekt kalt cody. Du kan tenke på Gjenstand() konstruktør som kakeskytter for å lage tomme objekter som ikke har forhåndsdefinerte egenskaper eller metoder (unntatt selvfølgelig de som er arvet fra prototypekjeden).

Hvis det ikke er klart, er det Gjenstand() Konstruktøren er en gjenstand selv. Det vil si at konstruktørfunksjonen er basert på et objekt opprettet fra Funksjon konstruktør. Dette kan være forvirrende. Bare husk det som Array konstruktør, Gjenstand Konstruktøren spretter bare tomme gjenstander. Og ja, du kan lage alle de tomme objekter du liker. Men å lage en tom gjenstand som cody er veldig annerledes enn å lage din egen konstruktørfunksjon med forhåndsdefinerte egenskaper. Pass på at du forstår at cody er bare en tom gjenstand basert på Gjenstand() konstruktør. For å virkelig utnytte kraften til JavaScript, må du lære ikke bare hvordan du lager tomme objektbeholdere fra Gjenstand(), men også hvordan du bygger din egen "klasse" av objekter (Person()) som Gjenstand() konstruktørfunksjonen selv.


Gjenstand() parametere

De Gjenstand() Konstruktørfunksjonen tar en valgfri parameter. Den parameteren er verdien du vil lage. Hvis du ikke oppgir noen parameter, så a null eller udefinert verdien vil antas.

Eksempel: sample70.html

 

Hvis en verdi dessuten null eller udefinert er sendt til Gjenstand konstruktør, vil verdien som er bestått, bli opprettet som et objekt. Så teoretisk kan vi bruke Gjenstand() konstruktør for å lage noen av de andre innfødte gjenstandene som har en konstruktør. I det neste eksemplet gjør jeg nettopp det.

Eksempel: sample71.html

 

Gjenstand() Egenskaper og metoder

De Gjenstand() objektet har følgende egenskaper (ikke inkludert arvede egenskaper og metoder):

Eiendommer (Object.prototype;):

  • prototype

Gjenstand() Instansegenskaper og metoder

Gjenstand() Objektinstanser har følgende egenskaper og metoder (inkluderer ikke arvede egenskaper og metoder):

Instansegenskaper (var myObject = ; myObject.constructor;):

  • konstruktør

Instansmetoder (var myObject = ; myObject.toString ();):

  • hasOwnProperty ()
  • isPrototypeOf ()
  • propertyIsEnumerable ()
  • toLocaleString ()
  • toString ()
  • verdien av()

Prototypekjeden slutter med Object.prototype, og dermed alle egenskapene og metodene til Gjenstand() er arvet av alle JavaScript-objekter.


Opprette Gjenstand() Objekter ved hjelp av "Object Literals"

Å skape en "objekt-bokstavelig" innebærer å instantiere et objekt med eller uten egenskaper ved hjelp av seler (var cody = ;). Husk i begynnelsen av kapittel 1 når vi opprettet den endelige cody-objekten og deretter ga cody-objektegenskapene ved hjelp av punktnotasjon? La oss gjøre det igjen.

Eksempel: sample72.html

 

Legg merke til i koden som lager cody objekt og dets egenskaper tok fem uttalelser. Ved å bruke objektets bokstavelige notasjon kan vi uttrykke det samme cody objekt i en uttalelse.

Eksempel: sample73.html

  

Ved å bruke bokstavelig notasjon gir vi muligheten til å lage objekter, inkludert definerte egenskaper, med mindre kode og innkapsling av relaterte data visuelt. Legg merke til bruken av : og , operatører i en enkelt setning. Dette er faktisk den foretrukne syntaksen for å lage objekter i JavaScript på grunn av dens terseness og lesbarhet.

Du bør være oppmerksom på at eiendomsnavn også kan angis som strenge:

Eksempel: sample74.html

  

Det er ikke nødvendig å spesifisere egenskaper som strenger med mindre eiendommens navn:

  • Er et av de reserverte søkeordene (klasse).
  • Inneholder mellomrom eller spesialtegn (alt annet enn tall, bokstaver, dollarskiltet ($) eller underskriften (_) tegnet).
  • Starter med et nummer.

Forsiktig! Den siste egenskapen til et objekt burde ikke ha et etterfølgende komma. Dette vil forårsake en feil i enkelte JavaScript-miljøer.


Alle objekter ervervet fra Object.prototype

De Gjenstand() Konstruktørfunksjonen i JavaScript er spesiell, som sin prototype Egenskapen er den siste stopp i prototypekjeden.

I den følgende prøven forstørrer jeg Object.prototype med en foo eiendom og deretter opprette en streng og forsøke å få tilgang til foo egenskap som om det var en egenskap av strengeksemplet. Siden myString forekomsten har ikke en foo eiendom, prototype kjeden sparker inn og verdien er søkt på String.prototype. Det er ikke der, så det neste stedet å se er Object.prototype, som er den endelige plasseringen JavaScript vil se etter en objektverdi. De foo verdien er funnet fordi jeg la den til, og dermed returnerer verdien av foo.

Eksempel: sample75.html

  

Konklusjon

Forsiktig! Alt lagt til Object.prototype vil dukke opp i en for i loop og prototype kjeden. På grunn av dette er det sagt at det endres Object.prototype er forbudt.