Link efectuează o __proto__ proprietate specială.
Proto prototip
În cazul în care un obiect are o legătură specială __proto__ la un alt obiect, atunci când proprietatea este citită de la ea, în cazul în care proprietatea nu este în obiectul în sine, este căutat în __proto__ obiect.
proprietate __proto__ este disponibil în toate browserele cu excepția IE10- și în IE mai vechi este, desigur, de asemenea, dar nu a făcut referire în mod direct la aceasta necesită un pic moduri mai complexe, pe care le vom examina mai târziu.
Exemplu de cod (cu excepția IE10-):
- Prima alertă la locul de muncă aici, evident - afișează proprietățile obiectului salturi de iepure.
- A doua alertă vrea să tragă rabbit.eats. cauta-l la iepure obiect. El găsește - și continuă să caute pentru obiectul de iepure .__ proto__. adică, în acest caz, în animal.
Ilustrare a ceea ce se întâmplă în rabbit.eats lectură (căutare merge de jos în sus):
De asemenea, ei spun că obiectul de iepure „moștenește prototipul“ de animale.
Să acorde o atenție - prototip utilizate doar pentru citire. Scrierea o valoare, de exemplu, rabbit.eats = valoarea sau ștergerea șterge rabbit.eats - lucrează direct cu obiectul.
In exemplul de mai jos, înregistrăm proprietatea în sine de iepure. după care alerta nu mai este de a lua-o de prototip, și durează mai mult de obiectul în sine:
Cu alte cuvinte, prototipul - un „proprietăți de stocare de rezervă și a metodelor“ obiectului este utilizat în mod automat atunci când caută.
Un obiect, care este __proto__. Poate __proto__ ta. la care - propria sa, și așa mai departe. Proprietățile vor fi căutate în lanț.
Duble între paranteze pătrate este important să nu fi confundat cu proprietăți foarte diferite, care este numit prototip. și pe care le vom discuta mai târziu.
Neutru for..in bucla nu face distincție între proprietățile obiectului și prototipul acestuia.
El trece prin toate, de exemplu:
Obiectul creat folosind Object.create (nul) nu este un prototip, astfel încât nu există caracteristici suplimentare. Pentru colecția - este doar ceea ce ai nevoie.
Tehnici pentru proto
În browserele moderne, există două metode suplimentare pentru lucrul cu __proto__. De ce au nevoie, dacă există __proto__. În general, nu este foarte necesar, dar din motive istorice, există, de asemenea.
Reading: Object.getPrototypeOf (obj) Returnează obj .__ proto__ (cu excepția IE8-) Record: Object.setPrototypeOf (obj, proto) Seturi Ob .__ proto__ = proto (cu excepția IE10-).
În plus, există o altă metodă de ajutor:
Crearea unui obiect cu prototipul: Object.create (proto, descriptori) Construiește un obiect gol cu __proto__. egal cu primul argument (cu excepția IE8-), un al doilea argument opțional poate conține proprietăți descriptori.
Mai multe prototipuri ale aceluiași obiect nu pot fi atribuite, dar puteți aranja obiectele din lanț, în cazul în care un obiect face referire la alta folosind __proto__. El se referă la al treilea și așa mai departe.
În browserele moderne au metodele de a face cu prototipul:
Ați putea fi confundată de lipsa de sprijin în __proto__ vechi IE. Dar nu e înfricoșător. În capitolele următoare, ne vom uita la modalități suplimentare de a lucra cu __proto__. inclusiv cei care lucrează peste tot.