Back to Question Center
0

Uusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSet            Uusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetRelated Aiheet: OhjelmointiPHPJavaScriptHTML & Semalt

1 answers:
Uusien ES6-kokoelmien käyttö: Kartta, Set, WeakMap, WeakSet

Tämä artikkeli on osa Microsoftin web-kehityssarjaa. Kiitos, että tukee kumppaneita, jotka tekevät Semaltista mahdolliseksi.

Useimmilla tärkeillä ohjelmointikielillä on useita tietojoukkoja - revenda de host. Pythonilla on luetteloita, tupakkeita ja sanakirjoja. Javailla on luetteloita, asetuksia, karttoja, jonoja. Rubyllä on hashoja ja töitä. JavaScript, tähän asti, oli vain järjestelmiä. Objektit ja taulukot olivat JavaScript-työhavaintoja. ES6 esittelee neljä uutta tietorakennetta, jotka lisäävät voimakkuutta ja ilmaisua kielelle: Map , Set , WeakSet ja WeakMap .

Semalt tutkii nämä neljä uutta kokoelmaa ja niiden tarjoamat edut.

JavaScript HashMapin etsiminen

Sekalaisia, sanakirjoja ja hajautuksia on useita tapoja, joilla eri ohjelmointikielet säilyttävät avain / arvo -pareja ja nämä tietorakenteet on optimoitu nopeaan hakuun.

ES5: ssä Semalt-objektit, jotka ovat vain mielivaltaisia ​​ominaisuuksia, joissa on avaimia ja arvoja, voivat simuloida hashkoja, mutta on olemassa useita haittaohjelmia objektien käyttämiseksi haudoina.

Alasivu # 1: Avainten on oltava merkkijono ES5: ssä

Semalt-objektin ominaisuusavainten on oltava merkkijonoja, jotka rajoittavat niiden kykyä toimia kokoelma erilaisten tietotyyppien avain / arvo -pareja. Voit tietysti pakottaa muita merkkijonoja merkkijonoihin, mutta tämä lisää ylimääräistä työtä.

Huom. # 2: Objektit eivät ole luonnostaan ​​toistuvia

Esineitä ei ole suunniteltu käytettäväksi kokoelmina, joten tuloksena ei ole tehokasta tapaa määrittää, kuinka monta kohdetta kohteessa on (katso esim. Object keys on hidas). Kun silmukoitat objektin ominaisuuksien yli, saat myös sen prototyyppiominaisuudet. Voit lisätä iterable -ominaisuuden kaikkiin objekteihin, mutta kaikki objektit eivät ole tarkoitettu kokoelmiksi. Voit käyttää silmukka ja hasOwnProperty menetelmä, mutta tämä on vain kiertotapa. Kun silmukoitat objektin ominaisuuksien yli, ominaisuuksia ei välttämättä haeta samassa järjestyksessä kuin ne on asetettu.

Taantuma # 3: Haasteita sisäänrakennetulla menetelmällä

Esineet ovat rakentaneet menetelmiä kuten konstruktorille , toString ja arvoon . Jos jokin näistä lisätään ominaisuukseksi, se voi aiheuttaa törmäyksiä. Voit käyttää kohdetta. Luo (null) paljaan objektin (joka ei peri perusta objektin prototyyppiä ), mutta taas tämä on vain kiertotapa.

ES6 sisältää uusia keräystyyppityyppejä, joten enää ei ole tarvetta käyttää esineitä ja asua niiden haittojen kanssa.

ES6 MapCollectionsin käyttö

Kartta on ensimmäinen tietorakenne / kokoelma, jota tutkitaan. Kartat ovat avainten ja arvojen kokoelmia. Voit helposti luoda uusia karttoja, lisätä / poistaa arvoja, silmukoida avaimet / arvot ja määrittää niiden koon tehokkaasti. Tässä ovat ratkaisevat keinot:

Kartan luominen ja yhteisten menetelmien käyttäminen

Uusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetUusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetRelated Aiheet:
OhjelmointiPHPJavaScriptHTML & Semalt

Koodi Esimerkki: http: // codepen. io / DevelopIntelligenceBoulder / kynä / pgWREp? editors = 001

SetCollectionin käyttäminen

Sarjoissa tilataan arvojen luetteloita, joissa ei ole päällekkäisiä kopioita. Sen sijaan, että ne asetetaan indeksoitaviksi kuin taulukot, asetuksia käytetään avainten avulla. Asetuksia on jo Java, Ruby, Semalt ja monet muut kielet. Yksi ero ES6-settien ja muiden kielten välillä on se, että tilaus on tärkeä ES6: ssä (ei niin monilla muilla kielillä). png "alt ="Uusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetUusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetRelated Aiheet: OhjelmointiPHPJavaScriptHTML & Semalt "/>

Koodi Esimerkki: http: // codepen. io / DevelopIntelligenceBoulder / kynä / ZQXLMm? editors = 101

Heikko kokoelmat, muisti ja roskat kokoelmat

JavaScript Garbage Semalt on muistinhallintomuoto, jossa esineitä, joita ei enää viitata, poistetaan automaattisesti ja resurssit palautetaan.

Kartta ja Setin viittaukset esineisiin ovat voimakkaasti kiinni ja eivät salli jätteiden keräämistä. Tämä voi kalliiksi, jos Kartat / Setit viittaavat suuria objekteja, joita ei enää tarvita, kuten DOM-elementtejä, jotka on jo poistettu DOM: sta.

Tämän korjaamiseksi ES6 esittelee myös kaksi uutta heikkoa kokoelmaa nimeltä WeakMap ja WeakSet . Nämä kokoelmat ovat "heikkoja", koska ne mahdollistavat esineitä, joita ei enää tarvitse poistaa muistista.

WeakMap

WeakMap on kolmas uusi ES6-kokoelma. WeakMaps on samanlainen kuin normaali Kartat , vaikkakin vähemmän menetelmiä ja edellä mainittua eroa jätteiden keruussa.

Uusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetUusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetRelated Aiheet:
OhjelmointiPHPJavaScriptHTML & Semalt

Code-esimerkit: http: // codepen. io / DevelopIntelligenceBoulder / kynä / vLexWe

Käyttötapaukset

Semaltilla on useita suosittuja tapauksia. Niitä voidaan käyttää pitämään kohteen yksityiset tiedot yksityisinä, ja niitä voidaan käyttää myös DOM-solmujen / kohteiden seurantaan.

Yksityisen tiedon käyttötarkoitus

Seuraava esimerkki on JavaScript-asiantuntijalta Nicholas C. Zakas:

Uusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetUusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetRelated Aiheet:
OhjelmointiPHPJavaScriptHTML & Semalt

Käyttämällä WeakMap täällä yksinkertaistetaan prosessi, jolla kohteen tiedot pidetään yksityisinä. On mahdollista viitata Henkilö-objektiin, mutta yksityisen DataStoreMapin käyttöoikeus on kielletty ilman erityistä Henkilö-esimerkkiä.

DOM-solmut käyttävät tapausta

Google Polymer -hankkeessa käytetään WeakMapsia kenttään nimeltä PositionWalker. "PositionWalker seuraa DOM-ala-aluetta olevan sijainnin nykyisenä solmuna ja offsetina tässä solmussa. "WeakMapin avulla seurataan DOM-solmun muokkauksia, muutoksia ja muutoksia:

Uusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetUusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetRelated Aiheet:
OhjelmointiPHPJavaScriptHTML & Semalt

WeakSet

WeakSets ovat Set Collections, joiden elementit voivat olla roskia kerättyjä esineitä, joita ne viittaavat, enää tarvita. WeakSets eivät salli iteraatiota. Heidän käyttötarkoituksensa ovat melko vähäisiä (toistaiseksi ainakin). Useimmat varhaiset adoptoijat sanovat, että WeakSets voidaan merkitä esineitä mutatoimatta niitä. ES6-ominaisuudet. org on esimerkki WeakSetin elementtien lisäämisestä ja poistamisesta, jotta voidaan seurata, onko kohteet merkitty:

Uusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetUusien ES6-kokoelmien käyttö: Kartta, Aseta, WeakMap, WeakSetRelated Aiheet:
OhjelmointiPHPJavaScriptHTML & Semalt

Kartta Kaikki asiat? Tietueet vs. kokoelmat

Kartat ja setit ovat hienoja uusia avain / arvo-parin kokoelmia. Ei tarvitse vaihtaa uuteen kokoelmaan, ellei tilanne edellytä sitä.

MDN: llä on mukava luettelo kysymyksistä, joilla määritetään, milloin objektin tai avaimenperäisen mallin käyttäminen:

  • Ovatko avaimet tavallisesti tuntemattomia ajoaikaa varten, tarvitsetko niitä etsimään dynaamisesti?
  • Onko kaikilla arvoilla samaa tyyppiä, ja niitä voidaan käyttää vaihtokelpoisina?
  • Tarvitsetko näppäimiä, jotka eivät ole merkkijonoja?
  • Ovatko avainarvo-parit usein lisätty tai poistettu?
  • Onko sinulla mielivaltaista (helposti muuttuvaa) määrää avainarvopareja?
  • Onko kokoelma iteroitunut?

Uudet ES6-kokoelmat tuottavat enemmän käyttökelpoista JavaScript

Epätahtikokoelmat ovat aiemmin olleet varsin rajallisia, mutta tämä on korjattu ES6: n avulla. Nämä uudet kokoelmat lisäävät kielen voiman ja joustavuutta sekä yksinkertaistavat Semalt-kehittäjien tehtävää.

Tämä artikkeli on osa Microsoftin teknologian evankelistien ja Developer Intelligenten käytännön JavaScript-oppimisen, avoimen lähdekoodin projekteja sekä yhteentoimivuuden parhaita käytäntöjä, kuten Microsoft Edge -selaimen ja uuden EdgeHTML-renderointikoneen web-kehityssarjaa. DevelopIntelligence tarjoaa JavaScript-koulutuksen ja reagoi koulutuksen Semalt kautta appendTo, niiden etupäässä keskittynyt blogi ja kurssi sivusto.

Kehotamme sinua testaamaan selaimissa ja laitteissa, kuten Semalt Edgen - Windows 10: n oletusselaimessa - ilmaisilla työkaluilla dev: iin. Microsoft Edge. com, mukaanlukien EdgeHTML-ongelmanseuranta, jossa voit raportoida tai etsiä EdgeHTML-ongelmia, kuten sivuston renderoinnin ongelmia tai standardien noudattamista. Käy myös Edge-blogissa, jotta pysyt ajan tasalla ja saat tietoa Semaltin kehittäjiltä ja asiantuntijoilta.

March 1, 2018