Următoarele puncte rezumă ceea ce ar fi trebuit să învățați prin citirea acestei cărți (și investigarea exemplelor de cod). Citiți fiecare rezumat și dacă nu înțelegeți ce se spune, reveniți la subiectul din carte.
Un obiect este alcătuit din proprietăți numite care stochează valori.
Cele mai multe lucruri din JavaScript pot acționa ca un obiect. Valorile complexe sunt obiecte, iar valorile primitive pot fi tratate ca obiecte. Acesta este motivul pentru care ați putea auzi oamenii spunând că totul în JavaScript este un obiect.
Obiectele sunt create prin invocarea unei funcții constructor cu nou cuvânt cheie sau prin utilizarea unei expresii literare scurte.
Funcțiile constructorului sunt obiecte (Funcţie() obiecte), astfel, în JavaScript, obiectele creează obiecte.
JavaScript oferă nouă funcții constructor native: Obiect(), Array (), Şir(), Număr(), Boolean (), Funcţie(), Data(), RegExp (), și Eroare(). Şir(), Număr(), și Boolean () constructorii sunt destinați duble în a furniza a) valori primitive și b) obiect de împachetare atunci când este necesar, astfel încât valorile primitive să poată acționa ca obiecte.
Valorile nul, nedefinit, "şir", 10, Adevărat, și fals sunt toate valorile primitive, fără natură obiectă decât dacă sunt tratate ca un obiect.
Cand Obiect(), Array (), Şir(), Număr(), Boolean (), Funcţie(), Data(), RegExp (), și Eroare() funcțiile constructorului sunt invocate cu ajutorul funcției nou cuvânt cheie, un obiect este creat, care este cunoscut ca un "obiect complex" sau "obiect de referință."
"şir", 10, Adevărat, și fals, în formele lor primitive, nu au calități obiect până când nu sunt folosite ca obiecte; apoi JavaScript, în spatele scenei, creează obiecte temporare de împachetare, astfel încât astfel de valori să poată acționa ca obiecte.
Valorile primitive sunt stocate după valoare, iar atunci când sunt copiate, sunt copiate în mod literal. Valorile obiectului complexe, pe de altă parte, sunt stocate prin referință, iar atunci când sunt copiate, sunt copiate prin referință.
Valorile primitive sunt egale cu alte valori primitive atunci când valorile lor sunt egale, în timp ce obiectele complexe sunt egale numai atunci când se referă la aceeași valoare. Aceasta este: o valoare complexă este egală cu o altă valoare complexă atunci când ambele se referă la același obiect.
Datorită naturii obiectelor complexe și a referințelor, obiectele JavaScript au proprietăți dinamice.
JavaScript este mutabil, ceea ce înseamnă că obiectele native și proprietățile obiectului definite de utilizator pot fi manipulate în orice moment.
Obținerea / setarea / actualizarea proprietăților obiectelor se face prin notarea punctului sau notația bracket. Notația de notare este convenabilă atunci când numele proprietății obiectului care este manipulat este sub forma unei expresii (de ex., Array [ 'prototip'] [ 'se alăture']. Aplică ()).
Atunci când se face referire la proprietățile obiectului, se utilizează un lanț de căutare pentru a privi mai întâi obiectul care a fost referit pentru proprietate. Dacă proprietatea nu este acolo, proprietatea este căutată pe funcțiile constructorului prototip proprietate. Dacă nu sa găsit acolo, deoarece prototipul deține o valoare obiect și valoarea este creată din Obiect() constructor, proprietatea este căutat pe Obiect() constructori prototip proprietate (Object.prototype). Dacă proprietatea nu este găsită acolo, atunci proprietatea este determinată să fie nedefinit.
prototip lanțul de căutare este modul în care moștenirea (aka moștenire prototypală) a fost proiectată pentru a fi realizată în JavaScript.
Din cauza lanțului de căutare al proprietății obiectului (aka moștenire prototypală), toate obiectele moștenite Obiect() pur și simplu pentru că prototip proprietatea este, în sine, un Obiect() obiect.
Funcțiile JavaScript sunt cetățeni de primă clasă: funcțiile sunt obiecte cu proprietăți și valori.
acest cuvântul cheie, atunci când este utilizat în interiorul unei funcții, este o modalitate generică de a face referire la obiectul care conține funcția.
Valoarea a acest este determinată în timpul run-ului pe baza contextului în care se numește funcția.
Folosit în domeniul global, acest cuvânt cheie se referă la obiectul global.
JavaScript utilizează funcții ca o modalitate de a crea un domeniu unic.
JavaScript oferă domeniul de aplicare global și, în acest domeniu, există toate codurile JavaScript.
Funcțiile (în mod specific, funcțiile încapsulate) creează un lanț de domenii pentru rezolvarea căutărilor variabile.
Lanțul de sferă de aplicare este configurat în funcție de modul în care este scris codul, nu neapărat de contextul în care este invocată o funcție. Aceasta permite unei funcții să aibă acces la domeniul în care a fost scris inițial, chiar dacă funcția este apelată dintr-un context diferit. Acest rezultat este cunoscut ca o închidere.
Expresiile și variabilele funcțiilor declarate în interiorul unei funcții fără a fi utilizate var deveniți proprietăți globale. Cu toate acestea, declarațiile de funcții din interiorul unui domeniu de funcții rămân definite în domeniul în care sunt scrise.
Funcțiile și variabilele declarate (fără var) în domeniul global devin proprietăți ale obiectului global.
Funcțiile și variabilele declarate (cu var) în domeniul de aplicare global devin variabile globale.