De volgende punten vatten samen wat u had moeten leren door dit boek te lezen (en de codevoorbeelden te onderzoeken). Lees elke samenvatting en als u niet begrijpt wat er wordt gezegd, gaat u terug naar het onderwerp in het boek.
Een object bestaat uit benoemde eigenschappen die waarden opslaan.
Bijna alles in JavaScript kan als een object fungeren. Complexe waarden zijn objecten en primitieve waarden kunnen als objecten worden behandeld. Daarom kun je mensen horen zeggen dat alles in JavaScript een object is.
Objecten worden gemaakt door een constructorfunctie aan te roepen met de nieuwe sleutelwoord, of door een stenografische letterlijke uitdrukking te gebruiken.
Constructorfuncties zijn objecten (Functie() objecten), maken objecten in JavaScript objecten.
JavaScript biedt negen ingebouwde constructorfuncties: Voorwerp(), Array (), Draad(), Aantal(), Boolean (), Functie(), Datum(), RegExp (), en Fout(). De Draad(), Aantal(), en Boolean () constructors hebben een tweeledige opzet in het verschaffen van a) primitieve waarden en b) objectwikkelingen wanneer nodig, zodat primitieve waarden kunnen werken als objecten.
De waarden nul, onbepaald, "draad", 10, waar, en vals zijn allemaal primitieve waarden, zonder objectkarakter tenzij behandeld als een object.
Wanneer de Voorwerp(), Array (), Draad(), Aantal(), Boolean (), Functie(), Datum(), RegExp (), en Fout() constructorfuncties worden aangeroepen met behulp van de nieuwe sleutelwoord, wordt een object gemaakt dat bekend staat als een "complex object" of "referentieobject".
"draad", 10, waar, en vals, in hun primitieve vormen geen objectkwaliteiten hebben totdat ze als objecten worden gebruikt; vervolgens maakt JavaScript achter de schermen tijdelijke wrapper-objecten, zodat dergelijke waarden als objecten kunnen werken.
Primitieve waarden worden opgeslagen op waarde en worden bij kopiëren letterlijk gekopieerd. Complexe objectwaarden worden aan de andere kant opgeslagen door verwijzing en worden bij kopiëren gekopieerd door referentie.
Primitieve waarden zijn gelijk aan andere primitieve waarden wanneer hun waarden gelijk zijn, terwijl complexe objecten alleen gelijk zijn wanneer ze naar dezelfde waarde verwijzen. Dat wil zeggen: een complexe waarde is gelijk aan een andere complexe waarde wanneer beide naar hetzelfde object verwijzen.
Vanwege de aard van complexe objecten en verwijzingen hebben JavaScript-objecten dynamische eigenschappen.
JavaScript is veranderbaar, wat betekent dat native objecten en door de gebruiker gedefinieerde objecteigenschappen op elk moment kunnen worden gemanipuleerd.
Het verkrijgen / instellen / bijwerken van de eigenschappen van een object gebeurt met behulp van puntnotatie of haakjesnotatie. Bracketnotatie is handig wanneer de naam van de objecteigenschap die wordt gemanipuleerd de vorm heeft van een uitdrukking (bijv., Array [ 'prototype'] [ 'meedoen']. Van toepassing zijn ()).
Wanneer naar objecteigenschappen wordt verwezen, wordt een opzoekketen gebruikt om eerst naar het object te kijken waarnaar werd verwezen voor de eigenschap. Als de eigenschap er niet is, wordt naar de eigenschap gezocht op de constructorfuncties prototype eigendom. Als het daar niet wordt gevonden, omdat het prototype een objectwaarde bevat en de waarde wordt gemaakt op basis van de Voorwerp() constructeur, het eigendom wordt gezocht op de Voorwerp() constructeurs prototype eigendom (Object.prototype). Als de woning daar niet wordt gevonden, is de eigenschap vastgesteld onbepaald.
De prototype opzoekketen is hoe inheritance (ook wel prototypische overerving genoemd) ontwerp was dat in JavaScript kon worden gerealiseerd.
Vanwege de opzoekketen voor objecteneigenschappen (ook wel overerving van prototypes) erven alle objecten van Voorwerp() gewoon omdat het prototype eigendom is, zelf, een Voorwerp() voorwerp.
JavaScript-functies zijn eersteklas burgers: functies zijn objecten met eigenschappen en waarden.
De deze trefwoord is, wanneer het in een functie wordt gebruikt, een algemene manier om naar het object met de functie te verwijzen.
De waarde van deze wordt bepaald tijdens runtime op basis van de context waarin de functie wordt aangeroepen.
Gebruikt in de globale scope, verwijst dit trefwoord naar het globale object.
JavaScript gebruikt functies als een manier om een uniek bereik te creëren.
JavaScript biedt het globale bereik, en het is in dit kader dat alle JavaScript-code bestaat.
Functies (met name ingekapselde functies) creëren een scopeketen voor het oplossen van variabele lookups.
De bereikketen wordt ingesteld op basis van de manier waarop de code wordt geschreven, niet noodzakelijkerwijs in de context waarin een functie wordt opgeroepen. Hierdoor kan een functie toegang krijgen tot de scope waarin deze oorspronkelijk is geschreven, zelfs als de functie vanuit een andere context wordt aangeroepen. Dit resultaat staat bekend als een sluiting.
Functie-uitdrukkingen en variabelen gedeclareerd in een functie zonder gebruik var wereldwijde eigenschappen worden. Functieverklaringen binnen een functiebereik blijven echter gedefinieerd in het bereik waarin ze zijn geschreven.
Gedeclareerde functies en variabelen (zonder var) in de globale scope worden eigenschappen van het globale object.
Gedeclareerde functies en variabelen (met var) in de globale scope worden globale variabelen.