ES8: Τι νέο υπάρχει στη γλώσσα JavaScript το 2017

Το ES8 είναι ζωντανό! Κυκλοφόρησε νωρίτερα αυτό το καλοκαίρι, το ES8 (ονομάζεται επίσης ES2017) προσφέρει νέους τρόπους κωδικοποίησης με JavaScript. Ας τα εξερευνήσουμε.

Εάν διαθέτετε την τελευταία έκδοση του Chrome, ανοίξτε την κονσόλα και ας κωδικοποιήσουμε μαζί.

Τιμές αντικειμένου ()

Πρόσβαση σε όλες τις τιμές του αντικειμένου μας χωρίς επιπλοκές. Ακολουθεί ένα παράδειγμα:

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

Γυρίστε το χαρακτηριστικό αντικειμένου σε μια σειρά χαρακτηριστικών:

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

Κορδόνι (padStart και padEnd)

Αυτό επιστρέφει την περασμένη συμβολοσειρά προσθέτοντας το μαξιλάρι και την αρχή ή στο τέλος της. Ο ορισμός της συνάρτησης είναι:

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

Μπορούμε να κάνουμε:

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

Επιστρέφει όλους τους δικούς (μη κληρονομικούς) περιγραφείς ιδιοτήτων ενός αντικειμένου. Τα χαρακτηριστικά του αντικειμένου επιστροφής μπορεί να είναι: value, writable, get, set, configurableκαι 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// }// }

Ένα πρακτικό παράδειγμα είναι: Το JavaScript έχει μια μέθοδο αντιγραφής ιδιοτήτων Object.assign(). Αντιγράφει την ιδιότητα του οποίου είναι το κλειδί key. Σαν αυτό:

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

Και σε ορισμένες περιπτώσεις αποτυγχάνει επειδή δεν αντιγράφει σωστά τις ιδιότητες με μη προεπιλεγμένα χαρακτηριστικά, όπως getter, setter και non-writable.

Για παράδειγμα:

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'

Επίλυση:

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

Κομματικά κόμματα σε λίστες παραμέτρων συνάρτησης και κλήσεις

Αυτή είναι μια συντακτική αλλαγή. Μας επιτρέπει να γράψουμε μια έγκυρη δήλωση συνάρτησης με κόμμα στο τέλος.

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

Λειτουργίες Async (async και αναμονή)

Αυτό καθιστά πολύ πιο εύκολο να εργαστείτε με ασύγχρονες λειτουργίες:

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)

Κοινή μνήμη και ατομικά

Σύμφωνα με τις προδιαγραφές:

"Η κοινόχρηστη μνήμη εκτίθεται με τη μορφή ενός νέου τύπου SharedArrayBuffer. Το νέο παγκόσμιο αντικείμενο Atomics παρέχει ατομικές λειτουργίες σε κοινόχρηστες θέσεις μνήμης, συμπεριλαμβανομένων των λειτουργιών που μπορούν να χρησιμοποιηθούν για τη δημιουργία πρωτευόντων συγχρονισμού αποκλεισμού."

Αυτό σημαίνει:

Κοινή μνήμη: μπορούμε να επιτρέψουμε σε πολλά νήματα να διαβάζουν και να γράφουν τα ίδια δεδομένα με τον νέο SharedArrayBufferκατασκευαστή.

Atomics: Μπορούμε να χρησιμοποιήσουμε το Atomicsαντικείμενο για να βεβαιωθούμε ότι τίποτα που γράφεται ή διαβάζεται δεν θα διακοπεί στη μέση της διαδικασίας. Έτσι οι εργασίες ολοκληρώθηκαν πριν ξεκινήσει η επόμενη.

Αν σας άρεσε αυτό το άρθρο, μην ξεχάσετε να μου δώσετε πολλά χειροκρότημα - αυτό σημαίνει τον κόσμο για τον συγγραφέα; Και ακολουθήστε με αν θέλετε να διαβάσετε περισσότερα άρθρα σχετικά με τον πολιτισμό, την τεχνολογία και τις νεοσύστατες επιχειρήσεις.

Ο Flávio H. de Freitas είναι επιχειρηματίας, μηχανικός, λάτρεις της τεχνολογίας, ονειροπόλος και ταξιδιώτης. Έχει εργαστεί ως CTO στη Βραζιλία , στη Silicon Valley και στην Ευρώπη .