I seguenti punti riassumono ciò che dovresti aver imparato leggendo questo libro (e studiando gli esempi di codice). Leggi ogni riassunto e, se non capisci ciò che viene detto, torna all'argomento nel libro.
Un oggetto è costituito da proprietà con nome che memorizzano i valori.
La maggior parte di tutto in JavaScript può agire come un oggetto. I valori complessi sono oggetti e i valori primitivi possono essere trattati come oggetti. Questo è il motivo per cui potresti sentire le persone dire che tutto in JavaScript è un oggetto.
Gli oggetti vengono creati richiamando una funzione di costruzione con il nuovo parola chiave o usando un'espressione letterale stenografica.
Le funzioni del costruttore sono oggetti (Funzione() oggetti), quindi, in JavaScript, gli oggetti creano oggetti.
JavaScript offre nove funzioni di costruzione nativa: Oggetto(), Array (), Stringa(), Numero(), Booleana (), Funzione(), Data(), RegExp (), e Errore(). Il Stringa(), Numero(), e Booleana () i costruttori sono a doppio scopo nel fornire a) i valori primitivi eb) i wrapper di oggetti quando necessario, in modo che i valori primitivi possano agire come oggetti.
I valori nullo, non definito, "stringa", 10, vero, e falso sono tutti valori primitivi, senza una natura oggetto se non trattati come un oggetto.
Quando il Oggetto(), Array (), Stringa(), Numero(), Booleana (), Funzione(), Data(), RegExp (), e Errore() le funzioni di costruzione sono invocate usando il nuovo parola chiave, viene creato un oggetto noto come "oggetto complesso" o "oggetto di riferimento".
"stringa", 10, vero, e falso, nelle loro forme primitive, non hanno qualità oggetto finché non sono usati come oggetti; quindi JavaScript, dietro le quinte, crea oggetti wrapper temporanei in modo che tali valori possano agire come oggetti.
I valori primitivi sono memorizzati in base al valore e, quando copiati, vengono letteralmente copiati. I valori di oggetti complessi d'altra parte sono memorizzati per riferimento e, quando copiati, vengono copiati per riferimento.
I valori primitivi sono uguali ad altri valori primitivi quando i loro valori sono uguali, mentre gli oggetti complessi sono uguali solo quando fanno riferimento allo stesso valore. Cioè: un valore complesso è uguale ad un altro valore complesso quando entrambi si riferiscono allo stesso oggetto.
A causa della natura di oggetti e riferimenti complessi, gli oggetti JavaScript hanno proprietà dinamiche.
JavaScript è mutabile, il che significa che gli oggetti nativi e le proprietà degli oggetti definiti dall'utente possono essere manipolati in qualsiasi momento.
Ottenere / impostare / aggiornare le proprietà di un oggetto è fatto usando notazione a punti o notazione di parentesi. La notazione a parentesi è utile quando il nome della proprietà dell'oggetto che viene manipolata è sotto forma di un'espressione (ad es., Array [ 'prototipo'] [ 'unirsi']. Applicare ()).
Quando si fa riferimento alle proprietà dell'oggetto, viene utilizzata una catena di ricerca per esaminare prima l'oggetto a cui si faceva riferimento per la proprietà. Se la proprietà non è presente, la proprietà viene cercata nelle funzioni del costruttore prototipo proprietà. Se non è stato trovato lì, perché il prototipo contiene un valore oggetto e il valore viene creato dal Oggetto() costruttore, la proprietà è cercata sul Oggetto() costruttori prototipo proprietà (Object.prototype). Se la proprietà non viene trovata lì, allora la proprietà è determinata per essere non definito.
Il prototipo la catena di ricerca è il modo in cui l'ereditarietà (ovvero l'eredità prototipale) è stata progettata per essere realizzata in JavaScript.
A causa della catena di ricerca delle proprietà dell'oggetto (ovvero l'ereditarietà del prototipo), tutti gli oggetti ereditano da Oggetto() semplicemente perché il prototipo la proprietà è, a sua volta, un Oggetto() oggetto.
Le funzioni JavaScript sono cittadini di prima classe: le funzioni sono oggetti con proprietà e valori.
Il Questo la parola chiave, se usata all'interno di una funzione, è un modo generico per fare riferimento all'oggetto che contiene la funzione.
Il valore di Questo viene determinato durante il runtime in base al contesto in cui viene chiamata la funzione.
Utilizzato nell'ambito globale, la parola chiave si riferisce all'oggetto globale.
JavaScript utilizza le funzioni come modo per creare un ambito univoco.
JavaScript fornisce l'ambito globale e in questo ambito esiste tutto il codice JavaScript.
Le funzioni (in particolare, funzioni incapsulate) creano una catena di portata per la risoluzione delle ricerche variabili.
La catena dell'ambito viene impostata in base al modo in cui il codice viene scritto, non necessariamente dal contesto in cui viene invocata una funzione. Ciò consente a una funzione di accedere allo scope in cui è stato originariamente scritto, anche se la funzione viene chiamata da un contesto diverso. Questo risultato è noto come chiusura.
Espressioni di funzioni e variabili dichiarate all'interno di una funzione senza utilizzo var diventare proprietà globali. Tuttavia, le istruzioni di funzione all'interno dell'ambito di una funzione rimangono definite nell'ambito in cui sono scritte.
Funzioni e variabili dichiarate (senza var) nello scope globale diventano proprietà dell'oggetto globale.
Funzioni e variabili dichiarate (con var) nell'ambito globale diventano variabili globali.