ES8: Hvad er nyt på JavaScript-sproget i 2017

ES8 er live! ES8 (også kaldet ES2017), der blev frigivet tidligere i sommer, tilbyder nye måder at kode med JavaScript på. Lad os udforske dem.

Hvis du har den nyeste version af Chrome, skal du åbne konsollen og lade os kode sammen.

Object.values ​​()

Få adgang til alle værdierne for vores objekt uden komplikationer. Her er et eksempel:

const countries = { BR: 'Brazil', DE: 'Germany', RO: 'Romania', US: 'United States of America'};
Object.values(countries); // ['Brazil', 'Germany', 'Romania', 'United States of America']

Objekt. Poster

Gør din objekt attribut i en vifte af attributter:

const countries = { BR: 'Brazil', DE: 'Germany', RO: 'Romania', US: 'United States of America'};
Object.entries(countries); 
// [['BR', 'Brazil'], ['DE', 'Germany'], ['RO', 'Romania'], ['US','United States of America']]

Strengpolstring (padStart og padEnd)

Dette returnerer den passerede streng, der tilføjer pad og begyndelsen eller i slutningen af ​​den. Funktionsdefinitionen er:

'string'.padStart(targetLength, padString)
'string'.padEnd(targetLength, padString)

Vi kan lave:

'0.10'.padStart(10); // it return a string of length 10, padding empty spaces in the beginning
'hi'.padStart(1); // 'hi''hi'.padStart(5); // ' hi''hi'.padStart(5, 'abcd'); // 'abchi''hi'.padStart(10, 'abcd'); // 'abcdabcdhi'
'loading'.padEnd(10, '.'); // 'loading...'
// useful example making things easier to read'0.10'.padStart(12); // ' 0.10''23.10'.padStart(12); // ' 23.10''12,330.10'.padStart(12); // ' 12,330.10'

Object.getOwnPropertyDescriptors ()

Den returnerer alle egne (ikke-arvede) ejendomsbeskrivelser for et objekt. Attributterne af afkastet objekt kan være: value, writable, get, set, configurableog enumerable.

const obj = { name: 'Pablo', get foo() { return 42; }};
Object.getOwnPropertyDescriptors(obj);//// {// "name": {// "value": "Pablo",// "writable":true,// "enumerable":true,// "configurable":true// },// "foo":{// "enumerable":true,// "configurable":true,// "get": function foo()// "set": undefined// }// }

Et praktisk eksempel er: JavaScript har en metode til at kopiere egenskaber Object.assign(). Det kopierer ejendommen, hvis nøgle er key. Sådan her:

const value = source[key]; // gettarget[key] = value; // set

Og i nogle tilfælde mislykkes det, fordi det ikke korrekt kopierer egenskaberne med ikke-standardattributter som getters, settere og ikke-skrivbare egenskaber.

For eksempel:

const objTarget = {};const objSource = { set greet(name) { console.log('hey, ' + name); }};Object.assign(objTarget, objSource);
objTarget.greet = 'love'; // trying to set fails, sets greet = 'love'

Løsning:

const objTarget = {};const objSource = { set greet(name) { console.log('hey, ' + name); }};Object.defineProperties(objTarget, Object.getOwnPropertyDescriptors(objSource));
objTarget.greet = 'love'; // prints 'hey, love'

Efterfølgende kommaer i funktionsparameterlister og opkald

Dette er en syntaksændring. Det giver os mulighed for i sidste ende at skrive en gyldig funktionserklæring med komma.

getDescription(name, age,) { ... }

Async-funktioner (async og afventer)

Dette gør det meget nemmere at arbejde med asynkrone funktioner:

function loadExternalContent() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('hello'); }, 3000); });}
async function getContent() { const text = await loadExternalContent(); console.log(text);}
console.log('it will call function');getContent();console.log('it called function');
// it prints:
'it will call function' // synchronous'it called function' // synchronous'hello' // asynchronous (after 3 seconds)

Delt hukommelse og atomik

I henhold til specifikationen:

"Delt hukommelse eksponeres i form af en ny SharedArrayBuffer-type; Det nye globale Atomics-objekt giver atomoperationer på delte hukommelsesplaceringer, herunder operationer, der kan bruges til at skabe blokerende synkroniseringsprimitiver."

Det betyder:

Delt hukommelse: vi kan tillade, at flere tråde læser og skriver de samme data med den nye SharedArrayBufferkonstruktør.

Atomics: Vi kan bruge Atomicsobjektet til at sikre, at intet, der skrives eller læses, afbrydes midt i processen. Så operationerne er afsluttet, før den næste starter.

Hvis du kunne lide denne artikel, skal du sørge for at kunne lide det, så jeg giver mange klapper - det betyder verden for forfatteren? Og følg mig, hvis du vil læse flere artikler om kultur, teknologi og opstart.

Flávio H. de Freitas er en iværksætter, ingeniør, teknisk elsker, drømmer og rejsende. Har arbejdet som CTO i Brasilien , Silicon Valley og Europa .