Objekt()

Med hjälp av den inbyggda Object () -konstruktorns funktion kan vi skapa generiska tomma objekt i flygningen. I själva verket, om du kommer ihåg tillbaka till början av kapitel 1, är det precis vad vi gjorde genom att skapa cody-objektet. Låt oss återskapa cody-objektet.

Prov: sample69.html

 

Här gör allt vi gör med Objekt() konstruktörfunktionen för att skapa ett generiskt objekt som heter cody. Du kan tänka på Objekt() konstruktör som kakskärare för att skapa tomma föremål som inte har några fördefinierade egenskaper eller metoder (förutom, naturligtvis de som ärva från prototypkedjan).

Om det inte är uppenbart, Objekt() konstruktören är ett föremål i sig. Det vill säga, konstruktörfunktionen är baserad på ett objekt som skapats från Fungera konstruktör. Detta kan vara förvirrande. Kom bara ihåg det som Array konstruktör, Objekt konstruktören spottar enkelt ut tomma objekt. Och ja, du kan skapa alla tomma föremål du gillar. Men att skapa ett tomt objekt som cody är väldigt annorlunda än att skapa din egen konstruktörsfunktion med fördefinierade egenskaper. Se till att du förstår att cody bara är ett tomt objekt baserat på Objekt() konstruktör. För att verkligen utnyttja kraften i JavaScript måste du inte bara lära dig hur man skapar tomma objektbehållare från Objekt(), men också hur man bygger din egen "klass" av objekt (Person()) som Objekt() konstruktör funktionen själv.


Objekt() parametrar

De Objekt() konstruktörfunktionen tar en valfri parameter. Den parametern är det värde du vill skapa. Om du inte anger någon parameter, a null eller odefinierad värdet antas.

Prov: sample70.html

 

Om ett värde förutom null eller odefinierad skickas till Objekt konstruktör, kommer värdet som passeras skapas som ett objekt. Så teoretiskt kan vi använda Objekt() konstruktör för att skapa någon av de andra inbyggda objekten som har en konstruktör. I nästa exempel gör jag just det.

Prov: sample71.html

 

Objekt() Egenskaper och metoder

De Objekt() objektet har följande egenskaper (ej medvetna egenskaper och metoder):

Egenskaper (Object.prototype;):

  • prototyp

Objekt() Instansegenskaper och metoder

Objekt() Objekt instanser har följande egenskaper och metoder (omfattar inte ärvda egenskaper och metoder):

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

  • konstruktör

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

  • hasOwnProperty ()
  • isPrototypeOf ()
  • propertyIsEnumerable ()
  • toLocaleString ()
  • att stränga()
  • värdet av()

Prototypkedjan slutar med Object.prototype, och därmed alla egenskaper och metoder för Objekt() är ärvda av alla JavaScript-objekt.


Skapande Objekt() Objekt som använder "Object Literals"

Att skapa ett "objekt bokstavligt" innebär att ett objekt objektiviseras med eller utan egenskaper som använder stag (var cody = ;). Kom ihåg i början av kapitel 1 när vi skapade det enstaka cody-objektet och gav sedan cody-objektegenskaperna med punktnotering? Låt oss göra det igen.

Prov: prov72.html

 

Lägg märke till i koden som skapar cody objekt och dess egenskaper tog fem uttalanden. Med hjälp av objektets bokstavliga notering kan vi uttrycka detsamma cody objekt i ett uttalande.

Prov: sample73.html

  

Genom att använda bokstavlig notering ger vi möjlighet att skapa objekt, inklusive definierade egenskaper, med mindre kod och inkapslera visuellt relaterade data. Lägg märke till användningen av : och , operatörer i ett enda uttalande. Det här är faktiskt den föredragna syntaxen för att skapa objekt i JavaScript på grund av dess terseness och läsbarhet.

Du bör vara medveten om att fastighetsnamn också kan anges som strängar:

Prov: sample74.html

  

Det är inte nödvändigt att ange egenskaper som strängar om inte fastighetsnamnet:

  • Är ett av de reserverade nyckelorden (klass).
  • Innehåller mellanslag eller specialtecken (något annat än siffror, bokstäver, dollartecknet ($) eller underskriften (_) tecknet).
  • Börjar med ett nummer.

Försiktig! Den sista egenskapen hos ett objekt borde inte ha ett kommande komma. Detta kommer att orsaka ett fel i vissa JavaScript-miljöer.


Alla föremål arv från Object.prototype

De Objekt() konstruktör funktion i JavaScript är speciell, som dess prototyp egendom är det sista stoppet i prototypkedjan.

I följande prov förstärker jag Object.prototype med en foo egendom och skapa sedan en sträng och försök att komma åt foo egenskap som om det var en egenskap av stränginstansen. Sedan Mystring exemplet har inte en foo egenskap, prototypkedjan slår in och värdet söks efter String.prototype. Det är inte där, så nästa plats att titta är Object.prototype, vilken är den slutliga platsen JavaScript kommer att leta efter ett objekt värde. De foo värdet hittas eftersom jag lagt till det, så det returnerar värdet av foo.

Prov: sample75.html

  

Slutsats

Försiktig! Allting tillagt Object.prototype kommer att dyka upp i en för in loop och prototypkedjan. På grund av detta har man sagt att förändras Object.prototype är förbjudet.