Metode ES6 în interiorul hărții obiectului
Până când am început, să nerușinare cere sprijinul. Dacă vă bucura de seria mea «ES6 din interior.“ Contribuțiile dvs. vor fi utilizate pentru găzduirea site-uri de pe hrana mea, faptul că nu am ținut pasul cu programul, și faptul că Pony foo a ramas adevarat vkusnyashek sursa dzhavaskriptovyh.
Vă mulțumim pentru ascultare, iar acum trece la colectarea! Pentru a ne reaminti de ceea ce facem, poti sa te uiti la un articol despre iteratorii - sunt strâns legate de colecții în ES6 - și într-un articol despre extinderea operatorului, iar ceilalți parametri.
Înainte de ES6 au fost matrice asociative
Această abordare are mai multe probleme, și anume:
- Probleme de securitate. atunci când din cauza tipului de chei __proto__ utilizator. toString sau orice altceva obiect Object.prototype devine imprevizibil, făcând interacțiunea cu un astfel de matrice asociative suschuyu de munca grea.
- Pentru a itera lista cu Object.keys (registru) .forEach sau vânzare „reiterată“ registru de protocol (registru) necesită o mulțime de cod.
- Taste restricționate rânduri, ceea ce face crearea de tablouri asociative cu cheile in DOM-elemente sau alte date non-string.
o trimitere la valorile matrice asociative exclusiv prin metode de prima problema de a decide prefixul și de precauție. Mai bine, utilizați un proxy pentru ES6. dar că, pentru a salva mâine!
Din fericire pentru noi, Harta obiecte ES6 mult mai în măsură să facă față problemelor de chei de securitate de numire. În același timp, ele oferă în mod automat funcționalitatea colecțiilor, care pot, de asemenea, veni la îndemână. Să vedem cum funcționează și ce beneficii practice de la ei.
Harta obiecte în ES6
Obiectul pe harta - o structură de date pentru o perechi cheie / valoare în ES6. Datorită lui avem o structură de date de succes pentru tablouri asociative. Anterior, ceva ca o hartă în ES6 uitat.
Unul dintre cele mai importante diferențe și că cheile pot fi folosite pentru orice. Nu sunt limitate la valori primitive, cum ar fi caractere, numere sau siruri de caractere, și puteți utiliza chiar și funcții, obiecte și date. Mai mult decât atât, cheile nu vor fi conduse la rândurile, cu ambele obiecte obișnuite.
Puteți utiliza, de asemenea obiecte Harta pentru orice obiecte care urmează protocolul „reiterată“ și de a crea o astfel de colecție ca „cheie“ [[, „valoare“]. [ 'Cheie', 'valoare']].
În acest exemplu, de fapt, se pare la fel ca și următorul. Observați cum folosim destruktirovanie în parametrii items.forEach. pentru a obține fără efort cheie și valoarea elementului bidimensional.
Desigur, mai degrabă o prostie să sufere, adăugând elemente unul câte unul, atunci când se poate doar „hrăni“ nostru obiect Harta nimic iterated. Vorbind de iterable - Harta se adera la protocol, „iterat“. Este ușor pentru a obține o colecție de perechi cheie-valoare, sunt foarte similare cu cele care pot „alimenta“ proiectantul hartă.
Desigur, în acest sens, puteți utiliza extinderea operatorului.
În plus, puteți utiliza for..of ciclu și pentru a combina acest lucru cu destruktirovaniem. la izbavatsya maxim de caractere suplimentare. Apropo, despre șabloanele literale nu au uitat?
Chiar și în ciuda faptului că există un software obiect Harta API pentru a adăuga elemente, chei sunt unice, așa cum este cazul cu matrice asociative. cheie de licență de volum suprascrie doar valoarea sa.
Harta Cele obiecte din ES6 NaN devine „caz excepțional“, care este tratat ca o valoare egală cu ea însăși. chiar dacă valoarea următoarea expresie va fi de fapt adevărat - NaN == NaN !.
matrice asociativă DOM
În ES5, ori de câte ori am avut DOM-elementul care a dorit să se asocieze cu obiect API-ul la orice bibliotecă, am fi trebuit să scrie o mulțime de cod lent, cum ar fi cea prezentată mai jos. Următoarea funcție în codul returnează pur și simplu API obiectului cu o grămadă de metode pentru elementele DOM care permit de a pune și elimina elemente din DOM-cache și, de asemenea a reveni obiect pentru API-ul DOM-elemente - în cazul în care elementul este deja acolo.
Unul dintre cele mai tari aspecte ale hărții. Așa cum am menționat deja. este posibil să se specifice DOM-elemente ca chei. Iar faptul că există posibilitatea colectării de manipulare Harta, mare totul mai ușor.
Faptul că aceste tehnici au devenit acum o linie, ceea ce înseamnă că nu putem să le separa, deoarece codul este, și atât de ușor de citit. Tocmai am luat și codul redus
30 stroknapolovinu. Ca să nu mai vorbim de faptul că, la un moment dat în viitor, aceasta va funcționa, de asemenea, opțiunea de mult mai rapid pentru a căuta elementul dorit în matrice ca un ac în carul cu fân.
De ce avem nevoie încă Harta?
Metodele de colectare în hartă
Harta obiecte permit destul de ușor de a explora colectarea și a vedea dacă în tasta Map definită. După cum sa menționat mai devreme, NaN este NaN. atunci când este vorba de hartă. Cu toate acestea, valoarea simbolului întotdeauna diferite, deci va trebui să le folosească în mod semnificativ.
Atâta timp cât păstrați legătura cu Symbol. totul este în ordine. Păstrați link-uri în apropiere, și e mai aproape Simbol?
Și nu uitați că există o distributie la tastele. Atenție! Suntem atât de folosite pentru a aduce obiectul la rândurile de chei, care pot fi capturate, în cazul în care nu trebuie să fie cu ochii în patru!
De asemenea, puteți curăța complet până obiectul hartă din înregistrările, păstrând o legătură către aceasta. Uneori este foarte util.
Când se utilizează ca un obiect de mapare iterable, de fapt, tu iteram .entries sale (). De aceea, în mod opțional iteram explicit .entries (). Acest lucru se face pentru tine, în orice caz. Îți amintești Symbol.iterator. nu-i așa?
Împreună cu .entries () în harta are alte două iterator. Acesta .keys () și .values (). Cel mai probabil ați ghicit deja, ce secvență de valori care le dau, dar aici e codul, doar în cazul în.
proprietate De asemenea, harta obiect a .size (read-only), al cărui comportament este similar cu likeArray.prototype.length - datorită lui, în orice moment, puteți obține numărul actual de intrări în hartă.
Este demn de menționat despre un alt aspect al hărții. înregistrările lor sunt mereu în mișcare la adăugarea comenzii. Spre deosebire de ciclurile Object.keys. care le ocolește, în ordine aleatorie.
iteratiile instructiunii for..in asupra proprietăților obiectelor enumerate în orice ordine.
De asemenea, Harta obiect are .forEach metoda. care se comportă în același mod. ca obiecte Array în ES5. Din nou, cheia aici nu este dat rândurile.
Treziți-vă devreme mâine să sărbătoare pe obiecte delicioase WeakMap. Set și WeakSet. )
P.S. Acesta poate fi, de asemenea, interesat în:
Mai puțin de șase luni de la ultima schimbare în procesul de lucru W3C ca conducerea consorțiului a primit o propunere de a aplica acest nou proces în cele din urmă cu privire la caz. Și scrie off este caietul de sarcini HTML irelevant pentru muzeu, astfel încât acestea nu sunt dezvoltatori confuzi „pretinde a fi“ relevante.
Un alt modul CSS, pe care ni sa spus în liniște maturizat la statutul cu care W3C recomandă pentru a începe utilizarea de rutină a noilor produse. conține elemente de proprietate vă permite să restricționați schimbarea desenului copac, retrasarea CSS-cutii și de a schimba dimensiunea lor în cadrul elementului. De aceea este atât de important ...
MAI MULT
De la Paris (foto), care a trecut recent CSS intalnire de lucru de grup, a sosit știri amuzant: Proprietăți grilă-rând-gap și grila coloana-decalaj, precum și reducerea grilă decalaj ...