Meniu

ES8, standardul Javascript 2017

Lansat la inceputul acestei veri, ES8 (numit si ES2017) ofera noi modalitati de codare cu JavaScript. Sa le exploram.

Daca aveti cea mai recenta versiune Chrome, deschideti consola si hai s-a codificam impreuna.

Object.values() Accesati toate valorile obiectului nostru fara nici o complicatie. Iata un exemplu:

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 Transformati atributul obiect intr-o serie de atribute:
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']]
String padding (padStart and padEnd) Aceasta returneaza sirul adaugat adaugand tamponul si inceputul sau sfarsitul acestuia. Definitia functiei este:
'string'.padStart(targetLength, padString)
'string'.padEnd(targetLength, padString)
Putem face:
'0.10'.padStart(10); // length 10
'hi'.padStart(1);            // 'hi'
'hi'.padStart(5);            // '   hi'
'hi'.padStart(5, 'abcd');    // 'abchi'
'hi'.padStart(10, 'abcd');   // 'abcdabcdhi'
'loading'.padEnd(10, '.');   // 'loading...'

'0.10'.padStart(12); // ' 0.10' '23.10'.padStart(12); // ' 23.10' '12,330.10'.padStart(12); // ' 12,330.10'

Object.getOwnPropertyDescriptors() Returneaza toti proprii descriptori de proprietate (ne-mosteniti) ai unui obiect. Atributele obiectului de returnare pot fi: valoare, scriere, obtinere, setare, configurabilitate si enumerare.(value, writable, get, set, configurable and 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
//  }
// }
Un exemplu practic este: JavaScript are o metoda de copiere a proprietatilor Object.assign (). Copiaza proprietatea a carei cheie este cheia. Asa:
const value = source[key]; // get
target[key] = value;       // set
In unele cazuri, acesta nu reuseste deoarece nu copiaza corect proprietatile cu atribute care nu sunt implicite, cum ar fi getters, setters si proprietati care nu pot fi inscriptionate. De exemplu:
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'
Rezolvarea:
const objTarget = {};
const objSource = {
    set greet(name) { console.log('hey, ' + name); }
};
Object.defineProperties(objTarget,          
           Object.getOwnPropertyDescriptors(objSource));
objTarget.greet = 'love'; // prints 'hey, love'
 

Comenzi in listele de parametri de functii si in apeluri Aceasta este o schimbare de sintaxa. Aceasta ne permite sa scriem o declaratie de functionare valida cu virgula in final.

getDescription(name, age,) { ... }
Async functii (async si await) Acest lucru face mult mai usor sa lucrati cu functii asincrone:
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)
Shared memory si atomics Memorie partajata: putem permite ca fire multiple sa citeasca si sa scrie aceleasi date cu noul constructor SharedArrayBuffer. Atomica: Putem folosi obiectul Atomics pentru a ne asigura ca nimic din ceea ce este scris sau citit nu v-a fi intrerupt in mijlocul procesului.

FlorinM

Utilizator Linux - Solus OS, pasionat de calatorii.
  • | 2708 articole

Nici un comentariu inca. Fii primul!
  • powered by Verysign