ES8: Kaj je novega v jeziku JavaScript v letu 2017

ES8 je v živo! ES8 (imenovan tudi ES2017), izdan v začetku tega poletja, ponuja nove načine kodiranja z JavaScriptom. Raziščimo jih.

Če imate najnovejšo različico Chroma, odprite konzolo in kodirajmo skupaj.

Object.values ​​()

Dostopajte do vseh vrednosti našega predmeta brez zapletov. Tu je primer:

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

Obrnite objekt atribut v niz atributov:

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

Oblazinjenje niza (padStart in padEnd)

To vrne posredovani niz, ki doda blazinico in začetek ali konec. Definicija funkcije je:

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

Izdelamo lahko:

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

Vrne vse lastne (nepodedovane) deskriptorje lastnosti predmeta. Atributi vrnitvi predmeta lahko: value, writable, get, set, configurablein 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// }// }

En praktičen primer je: JavaScript ima metodo za kopiranje lastnosti Object.assign(). Kopira lastnost, katere ključ je key. Všečkaj to:

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

In v nekaterih primerih ne uspe, ker lastnosti ne kopira pravilno z neprivzetimi atributi, kot so getterji, nastavitelji in lastnosti, ki jih ni mogoče zapisovati.

Na primer:

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'

Reševanje:

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

Zapiranje vejic na seznamih funkcijskih parametrov in klicih

To je sprememba skladnje. Omogoča nam, da na koncu napišemo veljavno izjavo funkcije z vejico.

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

Async funkcije (async in await)

Tako je veliko lažje delati z asinhronimi funkcijami:

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)

Skupni spomin in atomika

Glede na specifikacijo:

"Skupni pomnilnik je izpostavljen v obliki novega tipa SharedArrayBuffer; novi globalni objekt Atomics zagotavlja atomske operacije na lokacijah v skupnem pomnilniku, vključno z operacijami, ki jih je mogoče uporabiti za ustvarjanje blokirajočih primitivov za sinhronizacijo."

To pomeni:

Skupni pomnilnik: z novim SharedArrayBufferkonstruktorjem lahko več niti preberemo in zapišemo iste podatke .

Atomics: Z Atomicsobjektom lahko zagotovimo, da sredi postopka ne bo prekinjeno ničesar, kar piše ali bere. Operacije so torej končane, preden se začne naslednja.

Če ste uživali v tem članku, me prepričajte, da mi je všeč, da me zaploska - pisatelju pomeni svet? In sledite mi, če želite prebrati več člankov o kulturi, tehnologiji in zagonskih podjetjih.

Flávio H. de Freitas je podjetnik, inženir, ljubitelj tehnike, sanjar in popotnik. Delal je kot tehnični direktor v Braziliji , Silicijevi dolini in Evropi .