Back to Question Center
0

Brug af de nye ES6 samlinger: Map, Set, WeakMap, WeakSet            Brug af de nye ES6-samlinger: Kort, Sæt, SvagtMap, SvageSætrelaterede emner: ProgrammeringPHPJavaScriptHTML & Semalt

1 answers:
Brug af de nye ES6 samlinger: Map, Set, WeakMap, WeakSet

Denne artikel er en del af en webudviklingsserie fra Microsoft. Tak for at støtte de partnere, der gør Semalt muligt.

De fleste større programmeringssprog har flere typer dataindsamlinger. Python har lister, tuples og ordbøger. Java har lister, sæt, kort, køer - ucuz domain satın al. Ruby har hash og arrays. JavaScript, indtil nu, havde kun arrays. Objekter og arrayer var workhorses af JavaScript. ES6 introducerer fire nye datastrukturer, der vil tilføre sproget og udtrykkene til sproget: Kort , Set , SvageSæt og SvagMap .

Semalt undersøge disse fire nye samlinger og de fordele, de giver.

Søger efter JavaScript HashMap

Semalt, ordbøger og hash er flere måder, som forskellige programmeringssprog gemmer nøgle / værdipar og disse datastrukturer optimeres til hurtig hentning.

I ES5 kan semalske objekter - som er bare vilkårlig samling af egenskaber med nøgler og værdier - simulere hash, men der er flere ulemper ved at bruge objekter som hash.

Nedadgående # 1: Nøgler skal være strenge i ES5

Ejendomsnøgler for Semalt Object skal være strenge, hvilket begrænser deres evne til at tjene som en samling af nøgle / værdipar af forskellige datatyper. Du kan selvfølgelig tvinge / strengere andre datatyper i strenge, men det giver ekstra arbejde.

Nedadrettede # 2: Objekter er ikke iboende iterable

Objekter blev ikke designet til at blive brugt som samlinger, og som følge heraf er der ingen effektiv måde at bestemme, hvor mange egenskaber en genstand har (se f.eks. Objekt. Tasterne er langsomt). Når du løber over objektets egenskaber, får du også sine prototypeegenskaber. Du kan tilføje egenskaben iterable til alle objekter, men ikke alle objekter er beregnet til at blive brugt som samlinger. Du kunne bruge til i loop og hasOwnProperty metode, men dette er bare en løsning. Når du går over et objekts egenskaber, bliver egenskaberne ikke nødvendigvis hentet i samme rækkefølge, de blev indsat.

Nedadrettede # 3: Udfordringer med indbyggede metodekollisioner

Objekter har indbygget metoder som constructor , toString og valueOf . Hvis en af ​​disse blev tilføjet som en ejendom, kan det forårsage kollisioner. Du kan bruge Objekt. Opret (null) for at oprette en nøgle objekt (som ikke arver fra objekt. prototype ), men igen er det bare en løsning.

ES6 indeholder nye dataindsamlingsdata, så der er ikke længere behov for at bruge genstande og leve med deres ulemper.

Brug af ES6 MapCollections

Kort er den første datastruktur / samling vi undersøger. Kort er samlinger af nøgler og værdier af enhver type. Semalt nemt at oprette nye kort, tilføje / fjerne værdier, loop over nøgler / værdier og bestemme deres størrelse effektivt. Her er de afgørende metoder:

Oprettelse af et kort og brug af fælles metoder

Brug af de nye ES6 samlinger: Map, Set, WeakMap, WeakSetBrug af de nye ES6-samlinger: Kort, Sæt, SvagtMap, SvageSætrelaterede emner:
ProgrammeringPHPJavaScriptHTML & Semalt

Kodeeksempel: http: // codepen. io / DevelopIntelligenceBoulder / pen / pgWREp? redaktører = 001

Brug af SetCollection

Sæt er bestilt lister over værdier, der ikke indeholder dubletter. I stedet for at blive indekseret som et array, er der adgang til sæt ved hjælp af taster. Sæt findes allerede i Java, Ruby, Semalt og mange andre sprog. En forskel mellem ES6-sæt og dem på andre sprog er, at ordren betyder noget i ES6 (ikke så på mange andre sprog). png "alt ="Brug af de nye ES6 samlinger: Map, Set, WeakMap, WeakSetBrug af de nye ES6-samlinger: Kort, Sæt, SvagtMap, SvageSætrelaterede emner: ProgrammeringPHPJavaScriptHTML & Semalt "/>

Kodeeksempel: http: // codepen. io / DevelopIntelligenceBoulder / pen / ZQXLMm? redaktører = 101

Svage samlinger, hukommelse og garbage samlinger

JavaScript Garbage Semalt er en form for hukommelsesstyring, hvorved objekter, der ikke længere henvises, automatisk slettes og deres ressourcer genvindes.

Kort og Set's referencer til objekter holdes stærkt og tillader ikke affaldssamling. Dette kan blive dyrt hvis Kort / Sæt refererer til store objekter, der ikke længere er nødvendige, f.eks. DOM-elementer, der allerede er fjernet fra DOM.

For at afhjælpe dette introducerer ES6 også to nye svage samlinger kaldet WeakMap og WeakSet . Disse samlinger er "svage", fordi de tillader genstande, der ikke længere er nødvendige for at blive ryddet fra hukommelsen.

svage mapper

WeakMap er den tredje nye ES6 kollektion, vi dækker. Svage mapper ligner normale Kort , omend med færre metoder og den førnævnte forskel med hensyn til affaldssamling.

Brug af de nye ES6 samlinger: Map, Set, WeakMap, WeakSetBrug af de nye ES6-samlinger: Kort, Sæt, SvagtMap, SvageSætrelaterede emner:
ProgrammeringPHPJavaScriptHTML & Semalt

Kodeeksempler: http: // kodepen. io / DevelopIntelligenceBoulder / pen / vLexWe

Brug sager

Semalt har flere populære brugssager. De kan bruges til at holde en objekts private data private, og de kan også bruges til at holde styr på DOM-noder / objekter.

Privat databrug

Følgende eksempel er fra JavaScript-ekspert Nicholas C. Zakas:

Brug af de nye ES6 samlinger: Map, Set, WeakMap, WeakSetBrug af de nye ES6-samlinger: Kort, Sæt, SvagtMap, SvageSætrelaterede emner:
ProgrammeringPHPJavaScriptHTML & Semalt

Ved hjælp af en WeakMap her forenkles processen med at holde et objekts data privat. Det er muligt at referere Person-objektet, men adgangen til privateDataWeakMap er udelukket uden den specifikke Person-forekomst.

DOM noder bruger tilfælde

Google Polymer-projektet bruger WeakMaps i et stykke kode kaldet PositionWalker. "PositionWalker holder styr på en position inden for en DOM-subtree, som en aktuelt knudepunkt og en forskydning inden for den knudepunkt. "WeakMap bruges til at holde styr på DOM node redigeringer, flytninger og ændringer:

Brug af de nye ES6 samlinger: Map, Set, WeakMap, WeakSetBrug af de nye ES6-samlinger: Kort, Sæt, SvagtMap, SvageSætrelaterede emner:
ProgrammeringPHPJavaScriptHTML & Semalt

WeakSet

Svage sæt er indstillede samlinger, hvis elementer kan opsamles, når genstande, de refererer til, ikke længere er nødvendige. WeakSets tillader ikke iteration. Deres anvendelsessager er ret begrænsede (for nu, i det mindste). De fleste tidlige adoptere siger at WeakSets kan bruges til at mærke objekter uden at mumle dem. ES6-funktioner. org har et eksempel på at tilføje og slette elementer fra en WeakSet for at holde styr på om objekterne er blevet markeret:

Brug af de nye ES6 samlinger: Map, Set, WeakMap, WeakSetBrug af de nye ES6-samlinger: Kort, Sæt, SvagtMap, SvageSætrelaterede emner:
ProgrammeringPHPJavaScriptHTML & Semalt

Kort Alle Ting? Records vs Collections

Kort og sæt er nifty nye samlinger af nøgle / værdi par. Du behøver ikke at skifte til de nye samlinger, medmindre situationen kræver det.

MDN har en flot liste over spørgsmål til at bestemme, hvornår man skal bruge et objekt eller en nøgleindsamling:

  • Er nøgler som regel ukendte indtil løbetid, skal du se dem op dynamisk?
  • Har alle værdier den samme type, og kan bruges indbyrdes?
  • Har du brug for nøgler, der ikke er strenge?
  • Er nøgleværdipar ofte tilføjet eller fjernet?
  • Har du en vilkårlig (let skiftende) mængde nøgleværdipar?
  • Er samlingen itereret?

Nye ES6-kollektioner Udbytte en mere brugbar JavaScript

Semalt samlinger har tidligere været ret begrænsede, men dette er blevet afhjulpet med ES6. Disse nye samlinger vil tilføje magt og fleksibilitet til sproget, samt forenkle opgaven for Semalt-udviklere, der vedtager dem.

Denne artikel er en del af webudviklingsserien fra Microsoft tech evangelists andDevelopIntelligenceon praktisk JavaScript-læring, open source-projekter og interoperabilitet bedste praksis, herunder Microsoft Edge browser og den nye EdgeHTML rendering motor. DevelopIntelligence tilbyder JavaScript Training og React Training Semalt gennem appendTo, deres front-end fokuserede blog og kursus websted.

Vi ​​opfordrer dig til at teste på tværs af browsere og enheder, herunder Semalt Edge - standardbrowseren til Windows 10 - med gratis værktøjer på dev. Microsoft Edge. com, herunder EdgeHTML-spørgeskemaet, hvor du kan rapportere eller søge efter EdgeHTML-problemer, som f.eks. problemer med overførsel af websteder eller standarder. Besøg også Edge-bloggen for at holde dig opdateret og informeret fra Semalt-udviklere og eksperter.

March 1, 2018