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

Ένας κατασκευαστής σε πρωτότυπη JavaScript μοιάζει πολύ με οποιαδήποτε άλλη συνάρτηση. Η κύρια διαφορά είναι ότι μπορείτε να χρησιμοποιήσετε αυτήν τη συνάρτηση κατασκευαστή για να δημιουργήσετε αντικείμενα.

Τι είναι ο Κατασκευαστής στο JavaScript;

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

instagram viewer

Κατασκευαστής Σύνταξη

λειτουργίαNameOfConstructor() {
αυτό.ιδιότητα1 = "Ιδιοκτησία 1";
αυτό.ιδιότητα2 = "Ιδιοκτησία 2";
αυτό.ιδιότητα3 = "Ιδιοκτησία 3";
}

Μπορείτε να δημιουργήσετε έναν κατασκευαστή με το λειτουργία λέξη-κλειδί αφού είναι ουσιαστικά όπως κάθε άλλη λειτουργία. Ωστόσο, οι κατασκευαστές τηρούν τις ακόλουθες συμβάσεις:

  1. Για να τις ξεχωρίσετε από άλλες συναρτήσεις, χρησιμοποιήστε ένα όνομα για τον κατασκευαστή σας που αρχίζει με κεφαλαίο γράμμα.
  2. Οι κατασκευαστές χρησιμοποιούν το Αυτό λέξη-κλειδί διαφορετικά. Μέσα σε έναν κατασκευαστή, Αυτό αναφέρεται στο νέο αντικείμενο που θα δημιουργήσει ο κατασκευαστής.
  3. Σε αντίθεση με τις συναρτήσεις JavaScript, οι κατασκευαστές ορίζουν ιδιότητες και συμπεριφορές αντί να επιστρέφουν τιμές.

Χρήση κατασκευαστή για τη δημιουργία νέων αντικειμένων

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

λειτουργίαΜαθητης σχολειου() {
αυτό.όνομα = "Γκλόρια";
αυτό.γένος = "Θηλυκός";
Αυτό.ηλικία = 19;
}

αφήνω γυναίκαΜαθήτρια = νέος Μαθητης σχολειου();

Σε αυτό το παράδειγμα, μαθήτρια είναι ένα αντικείμενο που δημιουργήθηκε από το Μαθητης σχολειου κατασκευαστής. Χρησιμοποιήστε το νέος λέξη-κλειδί για να καλέσετε τη συνάρτηση ως κατασκευαστή. Αυτή η λέξη-κλειδί λέει στη JavaScript να δημιουργήσει μια νέα παρουσία του Μαθητης σχολειου. Δεν πρέπει να καλέσετε αυτήν τη λειτουργία χωρίς το νέος λέξη-κλειδί επειδή το Αυτό μέσα στον κατασκευαστή δεν θα δείχνει σε ένα νέο αντικείμενο. Μετά την κατασκευή, μαθήτρια έχει όλες τις ιδιότητες του Μαθητης σχολειου. Μπορείτε να έχετε πρόσβαση και να τροποποιήσετε αυτές τις ιδιότητες όπως θα κάνατε με οποιοδήποτε άλλο αντικείμενο.

Σημαντικά πράγματα που πρέπει να γνωρίζετε για τους κατασκευαστές JavaScript

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

Χρήση κατασκευαστών με επιχειρήματα

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

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

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

λειτουργίαΜαθητης σχολειου(όνομα, φύλο) {
Αυτό.name = όνομα;
Αυτό.φύλο = φύλο;
Αυτό.ηλικία = 19;
}

Όλα τα αντικείμενα που δημιουργούνται από τα παραπάνω θα έχουν ηλικία οριστεί σε 19. Μπορείτε να σχεδιάσετε τον κατασκευαστή σας με αυτόν τον τρόπο εάν υπάρχει μια ιδιότητα που θέλετε να έχουν όλα τα αντικείμενα.

Τώρα μπορείτε να ορίσετε μοναδικά αντικείμενα από τον ίδιο κατασκευαστή περνώντας διαφορετικά ορίσματα.

Τα επιχειρήματα κάνουν τους κατασκευαστές πιο ευέλικτους. Εξοικονομούν χρόνο και ενθαρρύνουν τον καθαρό κώδικα.

Καθορισμός μεθόδων αντικειμένου

Μια μέθοδος είναι μια ιδιότητα αντικειμένου που είναι μια συνάρτηση. Οι μέθοδοι βελτιώνουν τον κώδικά σας στο OOP καθώς προσθέτει διαφορετικές συμπεριφορές στα αντικείμενά σας. Εδώ είναι ένα παράδειγμα:

λειτουργίαΜαθητης σχολειου(όνομα, φύλο) {
Αυτό.name = όνομα;
Αυτό.φύλο = φύλο;
Αυτό.ηλικία = 19 ;

Αυτό.sayName = λειτουργία () {
ΕΠΙΣΤΡΟΦΗ«Το όνομά μου είναι ${name}`;
}
}

Το παραπάνω προσθέτει τη συνάρτηση sayName στον κατασκευαστή.

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

μαθήτρια.sayName()

Το Πρωτότυπο

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

Για να αποφευχθεί αυτή η αντιγραφή, η JavaScript χρησιμοποιεί την έννοια των πρωτοτύπων. Όλα τα αντικείμενα που δημιουργούνται από έναν κατασκευαστή μοιράζονται τις ιδιότητες του πρωτοτύπου του. Μπορείτε να προσθέσετε το ηλικία ιδιοκτησία σε Μαθητης σχολειου πρωτότυπο όπως φαίνεται παρακάτω:

Student.prototype.age = 19;

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

Μια πρωτότυπη ιδιότητα μπορεί να είναι αντικείμενο

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

Εναλλακτικά, μπορείτε να συμπεριλάβετε όλες τις ιδιότητες που χρειάζεστε σε ένα νέο αντικείμενο. Κάνοντας αυτό, θα ορίσετε όλες τις ιδιότητες ταυτόχρονα. Για παράδειγμα:

Student.prototype = {
ηλικία: 19,
αγώνας: "άσπρο",
αναπηρία: "Κανένας"
}

Θυμηθείτε να ρυθμίσετε το κατασκευαστής ιδιότητα όταν ορίζετε πρωτότυπα σε ένα νέο αντικείμενο.

Student.prototype = { 
κατασκευαστής: Μαθητης σχολειου,
ηλικία: 19,
αγώνας: "άσπρο",
αναπηρία: "Κανένας"
}

Μπορείτε να χρησιμοποιήσετε αυτήν την ιδιότητα για να ελέγξετε ποια συνάρτηση κατασκευαστή δημιούργησε μια παρουσία.

Υπερτύποι και Κληρονομικότητα

Κληρονομία είναι μια μέθοδος που χρησιμοποιούν οι προγραμματιστές για να μειώσουν τα σφάλματα στις εφαρμογές τους. Είναι ένας τρόπος να κολλήσετε στο Μην επαναλαμβάνετε τον εαυτό σας (ΞΗΡΩΜΑ) αρχή.

Ας υποθέσουμε ότι έχετε δύο κατασκευαστές-Μαθητης σχολειου και Δάσκαλος— που έχουν δύο παρόμοιες πρωτότυπες ιδιότητες.

Student.prototype = { 
κατασκευαστής: Μαθητης σχολειου,

sayName: λειτουργία () {
ΕΠΙΣΤΡΟΦΗ«Το όνομά μου είναι ${name}`;
}
}

Teacher.prototype = {
κατασκευαστής: Δάσκαλε,

sayName: λειτουργία () {
ΕΠΙΣΤΡΟΦΗ«Το όνομά μου είναι ${name}`;
}
}

Και οι δύο αυτοί κατασκευαστές ορίζουν το sayName μέθοδος, πανομοιότυπα. Για να αποφύγετε αυτήν την περιττή επανάληψη, μπορείτε να δημιουργήσετε ένα υπερτύπος.

λειτουργίαIndividualDetails(){};

IndividualDetails.prototype = {
κατασκευαστής: IndividualDetails,

sayName: λειτουργία () {
ΕΠΙΣΤΡΟΦΗ«Το όνομά μου είναι ${name}`;
}
};

Στη συνέχεια, μπορείτε να αφαιρέσετε sayName και από τους δύο κατασκευαστές.

Για να κληρονομήσετε τις ιδιότητες από τον υπερτύπο, χρησιμοποιήστε Object.create(). Ορίζετε το πρωτότυπο και των δύο κατασκευαστών σε μια παρουσία του υπερτύπου. Σε αυτή την περίπτωση, ορίζουμε το Μαθητης σχολειου και Δάσκαλος πρωτότυπα σε μια παρουσία IndividualDetails.

Ορίστε:

Μαθητής.πρωτότυπο = Αντικείμενο.create (IndividualDetails.prototype);
Δάσκαλος.πρωτότυπο = Αντικείμενο.create (IndividualDetails.prototype);

Κάνοντας αυτό, Μαθητης σχολειου και Δάσκαλος κληρονομούν όλες τις ιδιότητες του υπερτύπου, IndividualDetails.

Αυτός είναι ο τρόπος πρακτικής του DRY στο OOP χρησιμοποιώντας υπερτύπους.

Οι κατασκευαστές αλλάζουν το παιχνίδι

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

Στο ES6, μπορείτε να χρησιμοποιήσετε το τάξη λέξη-κλειδί για τον ορισμό κλασικών αντικειμενοστρεφών κλάσεων. Αυτή η έκδοση JavaScript υποστηρίζει επίσης α κατασκευαστής λέξη-κλειδί.