Αυτό το άρθρο είναι επίσης διαθέσιμο σε μορφή βίντεο.

Συναρπαστικές νέες δυνατότητες εισάγονται στην προδιαγραφή ECMAScript το 2022. Σε αυτό το άρθρο θα εξερευνήσουμε τα κυριότερα σημεία αυτών των νέων δυνατοτήτων.

Αλλαγές πεδίου τάξης

Οι προγραμματιστές μπορούν πλέον να δηλώνουν ιδιότητες στο ανώτερο επίπεδο της δήλωσης κλάσης χωρίς να χρησιμοποιούν κατασκευαστή. Προηγουμένως, όλες οι ιδιότητες έπρεπε να δηλωθούν σε έναν κατασκευαστή, όπως στο ακόλουθο παράδειγμα:

Αυτή η δήλωση μπορεί να γίνει χωρίς κατασκευαστή:

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

Οι ιδιότητες δεν χρειάζεται να εκχωρούνται με μια τιμή. Εάν αφήσετε ένα ακίνητο χωρίς ανάθεση, θα έχει απροσδιόριστη αξία.

Η αναμονή και η απόδοση δεν μπορούν να χρησιμοποιηθούν όταν αρχικοποιείται ένα πεδίο, ακόμα κι αν η κλάση ορίζεται σε μια συνάρτηση ασύγχρονης ή γεννήτριας.

Ιδιωτικά Πεδία

Μέχρι τώρα δεν υπήρχαν ιδιωτικά πεδία στις τάξεις JavaScript. Στις περισσότερες περιπτώσεις, οι προγραμματιστές θα έθεταν ως πρόθεμα ιδιωτικές ιδιότητες σε μια κλάση με μια υπογράμμιση (_) για να υποδείξουν ότι το πεδίο πρέπει να είναι ιδιωτικό. Το πρόβλημα είναι ότι τίποτα δεν εμπόδιζε τον χρήστη API από την πρόσβαση ή την τροποποίηση αυτής της ιδιότητας εκτός του αντικειμένου. Τα νέα ιδιωτικά χωράφια λύνουν αυτό το ζήτημα. Για να δηλώσετε ένα ιδιωτικό πεδίο, βάλτε το πρόθεμα "#".

Μπορείτε να ελέγξετε εάν υπάρχει ιδιωτικό πεδίο σε ένα αντικείμενο χρησιμοποιώντας τη λέξη-κλειδί «in»:

Στατικά μπλοκ κλάσης

Μια άλλη αλλαγή στις κλάσεις είναι η εισαγωγή στατικών μπλοκ κλάσεων. Τώρα μπορείτε να έχετε ένα ή πολλά στατικά μπλοκ σε μια κλάση που εκτελούνται μία φορά κατά τη δημιουργία κλάσης.

Τα στατικά μπλοκ έχουν επίσης πρόσβαση στο "super" αντικείμενο και στα ιδιωτικά πεδία.

Αναμονή ανώτατου επιπέδου

Το Await δεν μπορούσε να χρησιμοποιηθεί στο ανώτερο επίπεδο των λειτουργικών μονάδων JS. Ο προγραμματιστής έπρεπε να γράψει μια συνάρτηση ασύγχρονης ή αυτο-επίκλησης για να επιτευχθεί αυτό:

Όλος ο κώδικας ανώτατου επιπέδου στις λειτουργικές μονάδες είναι πλέον ασύγχρονος από προεπιλογή, πράγμα που σημαίνει ότι μπορείτε να χρησιμοποιήσετε ελεύθερα τη λέξη-κλειδί αναμονής:

Στο Method on all Indexable Objects

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

Η JavaScript έχει τώρα τη μέθοδο at που υποστηρίζει αρνητικούς δείκτες, κατασκευασμένη ακριβώς γι' αυτό.

Πίνακας findLast() και findLastIndex()

Ενώ στο θέμα των στοιχείων με δυνατότητα ευρετηρίου, οι πίνακες έχουν πλέον τις μεθόδους findLast() και findLastIndex(). Λειτουργούν ακριβώς όπως τα μη τελευταία αντίστοιχά τους — find() και findIndex(), αλλά ξεκινούν την αναζήτηση από το τελευταίο στοιχείο. Αυτό παρέχει μεγαλύτερη ευελιξία και ευκαιρίες για εύκολες βελτιστοποιήσεις απόδοσης, ειδικά σε περιπτώσεις όπου η αναζήτηση προς τα πίσω σίγουρα θα αποφέρει αποτελέσματα πιο γρήγορα.

Δείκτες αντιστοίχισης RegExp

Η μέθοδος RegExp exec στο παρελθόν επέστρεφε μόνο το αρχικό ευρετήριο μιας αντιστοίχισης.

Μπορούμε τώρα να πάρουμε τους δείκτες έναρξης και λήξης. Για να το πετύχουμε αυτό πρέπει να προσθέσουμε τη σημαία `d` στην κανονική έκφραση. Είναι μια νέα σημαία που έχει σχεδιαστεί μόνο για αυτόν τον σκοπό χωρίς άλλες παρενέργειες.

Μέθοδος αντικειμένου hasOwn().

Καθώς το Object.prototype.hasOwnProperty μπορεί να αντικατασταθεί από έναν αφηρημένο τύπο δεδομένων που έχει δημιουργηθεί από το χρήστη, οι προγραμματιστές JavaScript καταφεύγουν συχνά στη χρήση της μεθόδου κλήσης στη μέθοδο του πρωτότυπου hasOwnProperty:

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

Αιτία σφάλματος

Το τελευταίο νέο χαρακτηριστικό που θα εξετάσουμε είναι το αντικείμενο αιτίας σφάλματος. Είναι πολύ συνηθισμένο να εντοπίζονται πολλά σφάλματα σε ένα μπλοκ try-catch και στη συνέχεια να δημιουργείται ένα νέο σφάλμα. Σε αυτήν την περίπτωση, ο προγραμματιστής μπορεί τώρα να επισυνάψει το σφάλμα που προκαλεί στο νέο αντικείμενο Σφάλμα.

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

συμπέρασμα

Αυτά τα χαρακτηριστικά γυαλίζουν και επεκτείνουν τη σύνταξη δήλωσης κλάσης JavaScript, μεθόδους με δυνατότητα ευρετηρίασης αντικειμένων, κανονικές εκφράσεις, αντικείμενα και σφάλματα. Οι βελτιώσεις της σύνταξης της κλάσης θα επιτρέψουν την καλύτερη ενθυλάκωση των ιδιοτήτων και την ανάπτυξη καλύτερων αρχιτεκτονικών σε vanilla JavaScript χωρίς τη χρήση TypeScript, κάτι που αποτελεί σημαντική βελτίωση.