Εξηγήστε το JavaScript Records;

Exegeste To Javascript Records



Η JavaScript συνοδεύεται από τον μη πρωτόγονο τύπο δεδομένων ' Αντικείμενο ” το οποίο προέρχεται με τη βοήθεια πρωτόγονων (ενσωματωμένων) τύπων δεδομένων. Το 'Αντικείμενο' λειτουργεί ως παράδειγμα πρόσβασης στα μέλη JavaScript. Χρησιμοποιείται για την κλήση της συνάρτησης JavaScript για την εκτέλεση της συγκεκριμένης εργασίας που δεν μπορούν οι πρωτόγονοι τύποι δεδομένων. Ωστόσο, ένα μειονέκτημα αυτού του τύπου δεδομένων είναι ότι εκτελεί τη λειτουργία σύγκρισης με βάση την ταυτότητά του και όχι με βάση το περιεχόμενο. Για την επίλυση αυτού του προβλήματος, η JavaScript προσφέρει τον νέο τύπο δεδομένων ' Εγγραφές » καθώς συγκρίνει αυστηρά με βάση το περιεχόμενό του, όχι την ταυτότητα.

Αυτός ο οδηγός εξηγεί τις εγγραφές JavaScript.







Τι είναι τα «Ρεκόρ»;

JavaScript ' Εγγραφές ” είναι ένας νέος πρωτόγονος τύπος (συμβολοσειρές, αριθμοί, σύμβολα) παρόμοιος με τον ενσωματωμένο . Η μόνη διαφορά είναι ότι οι 'Εγγραφές' είναι καθαρά αμετάβλητες, δηλαδή η τιμή των κλειδιών τους δεν μπορεί να αλλάξει μόλις αρχικοποιηθούν.



Σύνταξη



Η σύνταξη του ' Ρεκόρ 'είναι πανομοιότυπο με ένα 'Αντικείμενο', αλλά απαιτεί ένα ' # (hash)' σύμβολο πριν από τα σγουρά άγκιστρα που το δηλώνουν ως 'Record':





const recoredName = #{
/*
κλειδί: αξία
/*
}


Ας χρησιμοποιήσουμε την προαναφερθείσα σύνταξη για να δημιουργήσουμε μια νέα εγγραφή.

Πώς να δημιουργήσετε αρχεία;

Για να δημιουργήσετε μια εγγραφή, καθορίστε το σύμβολο '#(hash)' στην αρχή των αγκύλων όπως φαίνεται στο παρακάτω μπλοκ κώδικα:



const πρόσωπο = #{
fname: 'Ή' ,
Όνομα: 'Ουσμάν' ,
ηλικία: είκοσι ένα ,
}
console.log ( πρόσωπο.fname )
console.log ( πρόσωπο.lόνομα )
console.log ( προσωπικότητα )


Στο παραπάνω μπλοκ κώδικα:

    • Ο ' πρόσωπο ' αναφέρεται σε μια νέα 'Εγγραφή' με τα ακόλουθα πλήκτρα 'fname', 'lname' και 'age'.
    • Στη συνέχεια, το « κονσόλα. κούτσουρο() Η μέθοδος εμφανίζει τις τιμές κλειδιού 'person' μία προς μία αντίστοιχα.

Σημείωση: Ο χρήστης μπορεί επίσης να καθορίσει το περιεχόμενο 'Εγγραφές' σε μία γραμμή ως εξής:

const πρόσωπο = #{fname: 'Ali', lname: 'Usman', ηλικία: 21}


Παραγωγή


Μπορεί να φανεί ότι η έξοδος εμφανίζει όλες τις βασικές τιμές του δημιουργημένου Record 'person'.

Περιορισμός Εγγραφών

Το 'Record' δεν δέχεται έναν 'Array' και ένα 'Object' ως κλειδί του. Εάν ο χρήστης τα μεταβιβάσει σε μια εγγραφή, τότε ο μεταγλωττιστής δημιουργεί ένα ' Τυπογραφικό λάθος '. Το παρακάτω μπλοκ κώδικα το δείχνει πρακτικά:

const newRecord = #{
arr: [ 'HTML' , 'CSS' , 'JavaScript' ]
}
console.log ( πρόσωπο.αρρ )


Στις παραπάνω γραμμές κώδικα:

    • Ο ' νέο ρεκόρ ' αρχικοποιεί έναν πίνακα με το όνομα 'arr' ως κλειδί του.
    • Στη συνέχεια, το « κονσόλα. κούτσουρο() Εμφανίζει την τιμή του κλειδιού 'arr' που καθορίζεται στο 'newRecord'.

Παραγωγή


Η κονσόλα εμφανίζει το 'TypeError (πέρασμα μη αναμενόμενου τύπου)' επειδή το 'Records' δεν δέχεται έναν πίνακα ως κλειδί.

Κατανόηση εγγραφών JavaScript με χρήση παραδειγμάτων

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

Ας ξεκινήσουμε με το πρώτο παράδειγμα.

Παράδειγμα 1: Οι εγγραφές είναι βαθιά αμετάβλητες

JavaScript ' Εγγραφές ” είναι βαθιά αμετάβλητοι πρωτόγονοι τύποι. Το 'βαθιά αμετάβλητο' σημαίνει ότι όλες οι βασικές τιμές μιας Εγγραφής δεν μπορούν να τροποποιηθούν ή να αλλάξουν σε οποιοδήποτε επίπεδο αφού έχουν οριστεί. Οι «πρωτόγονοι» τύποι δηλώνουν όλους τους βασικούς τύπους δεδομένων JavaScript όπως συμβολοσειρά, αριθμός, μηδενικός, απροσδιόριστος και πολλοί άλλοι.

Το ακόλουθο μπλοκ κώδικα δείχνει πρακτικά τη δηλωμένη έννοια:

const myRecord = #{
όνομα: 'Ή' ,
ηλικία: είκοσι ένα ,
}
myRecord.name= 'Χαρούν'


Στο παραπάνω μπλοκ κώδικα, το ' myRecord ' κλειδί ' όνομα Η τιμή ' τροποποιείται μετά την αρχικοποίησή της.

Παραγωγή


Μπορεί να παρατηρηθεί ότι ο μεταγλωττιστής εμφανίζει το 'TypeError' κατά την τροποποίηση της τιμής του κλειδιού 'newRecord'.

Παράδειγμα 2: Τα αρχεία είναι συγκριτικά

Το κύριο πλεονέκτημα των 'Records' είναι ότι συγκρίνονται με βάση τις αξίες τους και όχι με βάση την ταυτότητά τους. Ενώ τα «Αντικείμενα» συγκρίνονται σύμφωνα με την ταυτότητά τους και όχι με βάση τις αξίες τους. Εάν δύο τιμές Εγγραφών είναι ίσες, τότε ο μεταγλωττιστής ανακτά το true.

Ας το δούμε πρακτικά με τη βοήθεια δεδομένων γραμμών κώδικα:

const myRecord = #{
όνομα: 'Ή' ,
ηλικία: είκοσι ένα ,
}
console.log ( myRecord === #{
όνομα: 'Ή' ,
ηλικία: είκοσι ένα ,
} ) ;


Εδώ, το παραπάνω απόσπασμα κώδικα δημιουργεί δύο Εγγραφές που συγκρίνονται με τη βοήθεια του ' αυστηρή ισότητα (===)” χειριστής.

Παραγωγή


Η έξοδος επιστρέφει ένα ' αληθής 'Τιμή Boolean που σημαίνει ότι οι καθορισμένοι τελεστές, δηλαδή οι 'Εγγραφές' είναι ίσοι.

Παράδειγμα 3: Μετατροπή εγγραφής σε αντικείμενο

Το JavaScript 'Records' μπορεί επίσης να μετατραπεί σε τύπο δεδομένων 'Object' με τη βοήθεια του κατασκευαστή 'Object'. Ακολουθεί η πρακτική εφαρμογή του:

αφήνω myRecord = #{ Ένα: 1, Δύο: 2 }
console.log ( Αντικείμενο ( myRecord ) )
console.log ( τύπος myRecord )


Στις παραπάνω γραμμές κώδικα:

    • Ο πρώτος ' lconsole.and() Η μέθοδος χρησιμοποιεί τον κατασκευαστή 'Object' για να μετατρέψει το ' myRecord » σε «αντικείμενο.
    • Η δεύτερη μέθοδος 'console.log()' χρησιμοποιεί το ' του είδους ' λέξη-κλειδί για να ελέγξετε τον τύπο 'myRecord'.

Παραγωγή


Η έξοδος εμφανίζει τη μετατροπή 'newRecord' ως ' Αντικείμενο ' που επιβεβαιώνει ότι το 'newRecord' έχει μετατραπεί επιτυχώς σε 'αντικείμενο'.

Παράδειγμα 4: Μετατροπή αντικειμένου σε εγγραφή

Ο χρήστης μπορεί επίσης να μετατρέψει το 'Αντικείμενο' σε 'Εγγραφή' για λόγους σύγκρισης με τη βοήθεια του ' Ρεκόρ() 'μέθοδος. Ας το κάνουμε πρακτικά:

αφήνω myObj = { Ενας: 1 , Δύο: 2 }
αφήνω myRecord = Εγγραφή ( myObj )
console.log ( myRecord )


Τώρα, το παραπάνω απόσπασμα κώδικα χρησιμοποιεί το ' Ρεκόρ() ' μέθοδος μετατροπής του δεδομένου αντικειμένου 'myObj' σε 'myRecord'.

Παραγωγή


Η έξοδος δείχνει το αντικείμενο που μετατράπηκε 'myObj' σε περιεχόμενο 'myRecord' με επιτυχία.

Παράδειγμα 5: Δημιουργία νέων εγγραφών από υπάρχουσες εγγραφές

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

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

αφήνω oldRecord = #{A: 1, B: 2 };
αφήνω newRecord = #{ ...myRecord, C: 3, D:4}
console.log ( νέο ρεκόρ )


Στον παραπάνω κώδικα JavaScript:

    • Ο ' παλιά Εγγραφή ” αναφέρεται σε μια υπάρχουσα εγγραφή με δύο βασικές τιμές.
    • Στη συνέχεια το « νέο ρεκόρ ' αντιστοιχεί σε μια νέα Εγγραφή που δημιουργείται με τη βοήθεια της υπάρχουσας 'παλιάς Εγγραφής' και επίσης με την προσθήκη των νέων καθορισμένων βασικών τιμών.
    • Τέλος, το « κονσόλα. κούτσουρο() Εμφανίζει την εγγραφή που δημιουργήθηκε πρόσφατα με το όνομα 'newRecord'.

Παραγωγή


Η έξοδος εμφανίζει όλες τις βασικές τιμές της εγγραφής που δημιουργήθηκε πρόσφατα.

Παράδειγμα 6: Πρόσβαση στις εγγραφές χρησιμοποιώντας τη μέθοδο 'Object.keys()'.

Ο χρήστης μπορεί να χρησιμοποιήσει την ενσωματωμένη JavaScript ' κλειδιά () ' μέθοδος για ' Αντικείμενο ” για πρόσβαση στα πλήκτρα μιας Εγγραφής. Σε αυτό το σενάριο, χρησιμοποιείται για πρόσβαση στα κλειδιά 'myRecord':

αφήνω myRecord = #{A: 1, B: 2 };
αφήνω recordKeys = Αντικείμενο.κλειδιά ( myRecord ) ;
console.log ( κλειδιά εγγραφής )


Το παραπάνω απόσπασμα κώδικα χρησιμοποιεί το ' Object.keys() ' μέθοδος πρόσβασης σε όλα τα κλειδιά που υπάρχουν στο 'myRecord'.

Παραγωγή


Η έξοδος εμφανίζει όλα τα πλήκτρα του 'myRecord' σε μορφή πίνακα και επίσης με τα ευρετήριά τους σε μορφή ζεύγους κλειδιού-τιμής.

συμπέρασμα

JavaScript ' Εγγραφές ” είναι ο τύπος δεδομένων προηγμένου επιπέδου που είναι βαθιά αμετάβλητος. Λειτουργεί παρόμοια με ένα 'Αντικείμενο', αλλά η κύρια διαφορά είναι ότι η τιμή του μπορεί να αλλάξει ή να ενημερωθεί μόλις οριστεί. Απαιτεί ένα σύμβολο '#(hash)' πριν από τα σγουρά άγκιστρα για τη δήλωση, διαφορετικά λειτουργεί ως αντικείμενο. Αυτός ο οδηγός εξηγεί εν συντομία τον τύπο δεδομένων JavaScript Records.