Σύμβολο JavaScript (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθετε για το Σύμβολο JavaScript με τη βοήθεια παραδειγμάτων.

Σύμβολο JavaScript

Το JavaScript ES6 εισήγαγε έναν νέο πρωτόγονο τύπο δεδομένων που ονομάζεται Symbol. Τα σύμβολα είναι αμετάβλητα (δεν μπορούν να αλλάξουν) και είναι μοναδικά. Για παράδειγμα,

 // two symbols with the same description const value1 = Symbol('hello'); const value2 = Symbol('hello'); console.log(value1 === value2); // false

Αν και η τιμή 1 και η τιμή 2 περιέχουν την ίδια περιγραφή, είναι διαφορετικές.

Δημιουργία συμβόλου

Χρησιμοποιείτε τη Symbol()συνάρτηση για να δημιουργήσετε ένα Symbol. Για παράδειγμα,

 // creating symbol const x = Symbol() typeof x; // symbol

Μπορείτε να περάσετε μια προαιρετική συμβολοσειρά ως περιγραφή της. Για παράδειγμα,

 const x = Symbol('hey'); console.log(x); // Symbol(hey)

Περιγραφή συμβόλου πρόσβασης

Για πρόσβαση στην περιγραφή ενός συμβόλου, χρησιμοποιούμε τον .τελεστή. Για παράδειγμα,

 const x = Symbol('hey'); console.log(x.description); // hey

Προσθέστε το σύμβολο ως κλειδί αντικειμένου

Μπορείτε να προσθέσετε σύμβολα ως κλειδί σε ένα αντικείμενο χρησιμοποιώντας αγκύλες (). Για παράδειγμα,

 let id = Symbol("id"); let person = ( name: "Jack", // adding symbol as a key (id): 123 // not "id": 123 ); console.log(person); // (name: "Jack", Symbol(id): 123)

Τα σύμβολα δεν περιλαμβάνονται στο… στο Loop

Ο for… inβρόχος δεν επαναλαμβάνει τις συμβολικές ιδιότητες. Για παράδειγμα,

 let id = Symbol("id"); let person = ( name: "Jack", age: 25, (id): 12 ); // using for… in for (let key in person) ( console.log(key); )

Παραγωγή

 όνομα ηλικία

Οφέλη από τη χρήση συμβόλων στο αντικείμενο

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

 let person = ( name: "Jack" ); // creating Symbol let id = Symbol("id"); // adding symbol as a key person(id) = 12;

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

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

 let person = ( name: "Jack" ); let id = Symbol("id"); person(id) = "Another value";

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

Στο παραπάνω πρόγραμμα, εάν χρησιμοποιήθηκε το πλήκτρο συμβολοσειράς, τότε το μεταγενέστερο πρόγραμμα θα άλλαζε την τιμή της ιδιότητας. Για παράδειγμα,

 let person = ( name: "Jack" ); // using string as key person.id = 12; console.log(person.id); // 12 // Another program overwrites value person.id = 'Another value'; console.log(person.id); // Another value

Στο παραπάνω πρόγραμμα, το δεύτερο user.idαντικαθιστά την προηγούμενη τιμή.

Μέθοδοι συμβόλων

Υπάρχουν διάφορες διαθέσιμες μέθοδοι με το Symbol.

Μέθοδος Περιγραφή
for() Αναζητά υπάρχοντα σύμβολα
keyFor() Επιστρέφει ένα κοινόχρηστο κλειδί συμβόλου από το καθολικό μητρώο συμβόλων.
toSource() Επιστρέφει μια συμβολοσειρά που περιέχει την πηγή του αντικειμένου Symbol
toString() Επιστρέφει μια συμβολοσειρά που περιέχει την περιγραφή του συμβόλου
valueOf() Επιστρέφει την αρχική τιμή του αντικειμένου Symbol.

Παράδειγμα: Μέθοδοι συμβόλων

 // get symbol by name let sym = Symbol.for('hello'); let sym1 = Symbol.for('id'); // get name by symbol console.log( Symbol.keyFor(sym) ); // hello console.log( Symbol.keyFor(sym1) ); // id

Ιδιότητες συμβόλου

Ιδιότητες Περιγραφή
asyncIterator Επιστρέφει τον προεπιλεγμένο AsyncIterator για ένα αντικείμενο
hasInstance Καθορίζει εάν ένα αντικείμενο κατασκευαστή αναγνωρίζει ένα αντικείμενο ως παρουσία του
isConcatSpreadable Υποδεικνύει εάν ένα αντικείμενο πρέπει να ισοπεδωθεί στα στοιχεία του πίνακα
iterator Επιστρέφει τον προεπιλεγμένο επαναληπτικό για ένα αντικείμενο
match Ταιριάζει με μια συμβολοσειρά
matchAll Επιστρέφει έναν επαναληπτικό που αποδίδει αγώνες της κανονικής έκφρασης σε μια συμβολοσειρά
replace Αντικαθιστά ταιριαστά υποστρώματα μιας συμβολοσειράς
search Επιστρέφει το ευρετήριο μέσα σε μια συμβολοσειρά που ταιριάζει με την κανονική έκφραση
split Διαχωρίζει μια συμβολοσειρά στους δείκτες που ταιριάζουν με μια κανονική έκφραση
species Δημιουργεί παράγωγα αντικείμενα
toPrimitive Μετατρέπει ένα αντικείμενο σε πρωτόγονη τιμή
toStringTag Δίνει την προεπιλεγμένη περιγραφή ενός αντικειμένου
description Επιστρέφει μια συμβολοσειρά που περιέχει την περιγραφή του συμβόλου

Παράδειγμα: Παράδειγμα ιδιοτήτων συμβόλων

 const x = Symbol('hey'); // description property console.log(x.description); // hey const stringArray = ('a', 'b', 'c'); const numberArray = (1, 2, 3); // isConcatSpreadable property numberArray(Symbol.isConcatSpreadable) = false; let result = stringArray.concat(numberArray); console.log(result); // ("a", "b", "c", (1, 2, 3))

ενδιαφέροντα άρθρα...