Ακολουθούν ορισμένα πρακτικά αντικείμενα JavaScript που έχουν ενθυλάκωση

Το Discover Functional JavaScript ονομάστηκε ένα από τα καλύτερα νέα βιβλία λειτουργικού προγραμματισμού από το BookAuthority !

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

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

Θα δημιουργήσω μερικά αντικείμενα που μπορούν να είναι χρήσιμα σε μια εφαρμογή: Stack, Queue, Event Emitter και Timer. Όλα θα κατασκευαστούν χρησιμοποιώντας εργοστασιακές λειτουργίες.

Ας αρχίσουμε.

Σωρός

Η στοίβα είναι μια δομή δεδομένων με δύο κύριες λειτουργίες: pushγια την προσθήκη ενός στοιχείου στη συλλογή και popγια την κατάργηση του πιο πρόσφατου στοιχείου που προστέθηκε. Προσθέτει και αφαιρεί στοιχεία σύμφωνα με την αρχή Last In First Out (LIFO).

Κοιτάξτε το επόμενο παράδειγμα:

let stack = Stack(); stack.push(1); stack.push(2); stack.push(3); stack.pop(); //3 stack.pop(); //2

Ας εφαρμόσουμε τη στοίβα χρησιμοποιώντας μια εργοστασιακή συνάρτηση.

function Stack(){ let list = []; function push(value){ list.push(value); } function pop(){ return list.pop(); } return Object.freeze({ push, pop }); }

Το αντικείμενο στοίβας έχει δύο δημόσιες μεθόδους push()και pop(). Η εσωτερική κατάσταση μπορεί να αλλάξει μόνο μέσω αυτών των μεθόδων.

stack.list; //undefined

Δεν μπορώ να τροποποιήσω απευθείας την εσωτερική κατάσταση:

stack.list = 0;//Cannot add property list, object is not extensible

Μπορείτε να βρείτε περισσότερα στο βιβλίο Discover Functional JavaScript.

Για περισσότερα σχετικά με την εφαρμογή τεχνικών λειτουργικού προγραμματισμού στο React ρίξτε μια ματιά στο Functional React .

Μάθετε λειτουργικό React , με βάση ένα έργο, με τη λειτουργική αρχιτεκτονική με το React και το Redux .

Ακολουθήστε στο Twitter