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()
parametrarDe 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 metoderDe Objekt()
objektet har följande egenskaper (ej medvetna egenskaper och metoder):
Egenskaper (Object.prototype;
):
prototyp
Objekt()
Instansegenskaper och metoderObjekt()
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.
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:
klass
).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.
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
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.