ES8: A JavaScript nyelv újdonságai 2017-ben

Az ES8 élőben van! A nyár elején megjelent ES8 (más néven ES2017) a JavaScript-sel történő új kódolási lehetőségeket kínálja. Fedezzük fel őket.

Ha a Chrome legújabb verziójával rendelkezik, nyissa meg a konzolt, és kódoljunk együtt.

Object.values ​​()

Hozzáférés az objektumunk összes értékéhez bonyodalmak nélkül. Íme egy példa:

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

Object.entries

Fordítsa az objektum attribútumot egy sor attribútumba:

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']]

Karaktersorozat (padStart és padEnd)

Ez visszaadja az átadott karakterláncot, hozzáadva a betűt és annak elejét vagy végét. A függvény meghatározása:

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

Meg tudjuk csinálni:

'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 ()

Visszaadja az objektum összes saját (nem örökölt) tulajdonságleíróját. Az attribútumok a visszatérési objektum lehet: value, writable, get, set, configurableés 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// }// }

Az egyik gyakorlati példa: A JavaScript rendelkezik egy módszerrel a tulajdonságok másolására Object.assign(). Másolja azt az ingatlant, amelynek kulcsa van key. Mint ez:

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

Bizonyos esetekben meghiúsul, mert nem másolja megfelelően a tulajdonságokat olyan alapértelmezett attribútumokkal, mint a getters, a setters és a nem írható tulajdonságok.

Például:

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'

Megoldás:

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

Vesszők követése a függvényparaméter-listákban és a hívásokban

Ez egy szintaktikai változás. Ez lehetővé teszi számunkra, hogy érvényes függvénydeklarációt írjunk vesszővel a végén.

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

Async funkciók (async és várakozás)

Ez sokkal könnyebbé teszi az aszinkron funkciókkal való munkát:

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)

Közös memória és atomok

A specifikáció szerint:

"A megosztott memória egy új SharedArrayBuffer típus formájában jelenik meg; Az új globális Atomics objektum atomi műveleteket biztosít a megosztott memória helyein, beleértve azokat a műveleteket is, amelyek felhasználhatók blokkoló szinkronizációs primitívek létrehozására."

Ez azt jelenti, hogy:

Megosztott memória: több szál számára is lehetővé tehetjük ugyanazok az adatok olvasását és írását az új SharedArrayBufferkonstruktorral.

Atomics: Használhatjuk az Atomicsobjektumot, hogy megbizonyosodhassunk arról, hogy az írás vagy olvasás során semmi sem szakad meg a folyamat közepén. Tehát a műveletek befejeződnek, mielőtt a következő elindul.

Ha tetszett ez a cikk, feltétlenül kedvelje, sok tapsot adjon nekem - ez jelenti a világot az író számára? És kövessen engem, ha további cikkeket szeretne olvasni a kultúráról, a technológiáról és a startupokról.

Flávio H. de Freitas is an Entrepreneur, Engineer, Tech lover, Dreamer and Traveler. Has worked as CTO in Brazil, Silicon Valley and Europe.