Följande punkter sammanfattar vad du borde ha lärt dig genom att läsa den här boken (och undersöka kodexemplen). Läs varje sammanfattning, och om du inte förstår vad som sägs, återgå till ämnet i boken.
Ett objekt består av namngivna egenskaper som lagrar värden.
De flesta allt i JavaScript kan fungera som ett objekt. Komplexa värden är objekt, och primitiva värden kan behandlas som objekt. Det är därför du kanske hör att folk säger att allt i JavaScript är ett objekt.
Objekt skapas genom att åberopa en konstruktörsfunktion med ny nyckelord, eller genom att använda ett kortfattat uttryck.
Konstruktörsfunktioner är objekt (Fungera() objekt), så skapar objekt i objekt i JavaScript.
JavaScript erbjuder nio inbyggda konstruktörsfunktioner: Objekt(), Array (), Sträng(), Siffra(), Boolean (), Fungera(), Datum(), RegExp (), och Fel(). De Sträng(), Siffra(), och Boolean () konstruktörer är dubbelt avsedda att tillhandahålla a) primitiva värden och b) objektomslag när det behövs, så att primitiva värden kan verka som objekt.
Värdena null, odefinierad, "sträng", 10, Sann, och falsk är alla primitiva värden, utan en objekt natur om de inte behandlas som ett föremål.
När Objekt(), Array (), Sträng(), Siffra(), Boolean (), Fungera(), Datum(), RegExp (), och Fel() konstruktörfunktioner åberopas med hjälp av ny sökord skapas ett objekt som kallas ett komplext objekt eller referensobjekt.
"sträng", 10, Sann, och falsk, i sina primitiva former har inga objektegenskaper förrän de används som föremål; då skapar JavaScript, bakom kulisserna, temporära wrapperobjekt så att sådana värden kan fungera som objekt.
Primitiva värden lagras av värde och kopieras bokstavligen när de kopieras. Komplexa objektvärden å andra sidan lagras genom referens och kopieras genom referens.
Primitiva värden är lika med andra primitiva värden när deras värden är lika, medan komplexa objekt bara är lika när de refererar till samma värde. Det vill säga: ett komplext värde är lika med ett annat komplext värde när båda hänvisar till samma objekt.
På grund av arten av komplexa objekt och referenser har JavaScript-objekt dynamiska egenskaper.
JavaScript är mutable, vilket innebär att inhemska objekt och användardefinierade objektegenskaper kan manipuleras när som helst.
Att få / ställa in / uppdatera objektegenskaper görs med hjälp av punktnotering eller konsolnotation. Fäste notering är lämplig när namnet på objektegenskapen som manipuleras är i form av ett uttryck (t.ex.., Array [ 'prototyp'] [ 'gå']. Gäller ()).
När man refererar till objektegenskaper används en uppslagskedja för att först titta på objektet som hänvisades till egenskapen. Om fastigheten inte finns finns egenskapen efterkonstruktörsfunktioner prototyp fast egendom. Om det inte hittades där, eftersom prototypen har ett objektvärde och värdet skapas från Objekt() konstruktör, är fastigheten sökt på Objekt() konstruktörer prototyp fast egendom (Object.prototype). Om fastigheten inte finns där, är fastigheten fast besluten att vara odefinierad.
De prototyp lookup kedja är hur arv (aka prototypal arv) var design som ska utföras i JavaScript.
På grund av objektets uppslagskedja (aka prototypal arv), är alla objekt ärvda från Objekt() helt enkelt för att prototyp egendom är i sig en Objekt() objekt.
JavaScript-funktioner är förstklassiga medborgare: funktioner är objekt med egenskaper och värden.
De detta sökord, när det används inom en funktion, är ett generiskt sätt att referera till objektet som innehåller funktionen.
Värdet av detta bestäms under körtiden baserat på det sammanhang där funktionen kallas.
Används i det globala räckviddet, det här sökordet refererar till det globala objektet.
JavaScript använder funktioner som ett sätt att skapa ett unikt räckvidd.
JavaScript tillhandahåller det globala räckviddet, och det är i denna omfattning att all JavaScript-kod finns.
Funktioner (specifikt inkapslade funktioner) skapar en räckviddskedja för att lösa variabla uppslag.
Omfattningskedjan är uppbyggd baserat på hur koden skrivs, inte nödvändigtvis av det sammanhang där en funktion åberopas. Detta medger att en funktion har tillgång till det räckvidd där det ursprungligen skrevs, även om funktionen heter från ett annat sammanhang. Detta resultat är känt som en nedläggning.
Funktionsuttryck och variabler deklarerade i en funktion utan att använda var bli globala egenskaper. Funktionsförklaringar inom ett funktionsomfång förblir emellertid definierade i det område de skrivs i.
Funktioner och variabler deklarerade (utan var) i det globala räckviddet blir egenskaper för det globala objektet.
Funktioner och variabler deklarerade (med var) i det globala räckviddet blir globala variabler.