Κληρονομικότητα
Η κληρονομικότητ α είναι η ικανότητα μιας κλάσης να κληρονομήσει ιδιότητες και μεθόδους από μια άλλη κλάση. Στην JavaScript, η κληρονομικότητα επιτυγχάνεται μέσω του πεδίου πρωτοτύπου.
Στο παρακάτω παράδειγμα, η κλάση Developer
κληρονομεί τις ιδιότητες και τις μεθόδους της κλάσης Person
.
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
};
function Developer(name, age, language) {
Person.call(this, name, age);
this.language = language;
}
Developer.prototype = Object.create(Person.prototype);
Developer.prototype.constructor = Developer;
Developer.prototype.sayLanguage = function() {
console.log(`I am a developer and I code in ${this.language}.`);
};
const john = new Developer("John", 30, "JavaScript");
john.sayHello(); // "Hello, my name is John and I am 30 years old."
john.sayLanguage(); // "I am a developer and I code in JavaScript."
Με την χρήση της μεθόδου call()
, καλούμε τον κατασκευαστή της κλάσης Person
με το this
της κλάσης Developer
. Αυτό είναι απαραίτητο για να μπορέσουμε να περάσουμε τις τιμές name
και age
στην κλάση Person
.
Η μέθοδος Object.create()
δημιουργεί ένα νέο αντικείμενο με το πεδίο πρωτοτύπου του αντικειμένου που περνάμε ως όρισμα. Στην περίπτωσή μας, δημιουργοϋμε ένα νέο αντικείμενο με το πεδίο πρωτοτύπου της κλάσης Person
.
Τέλος, ορίζουμε την ιδιότητα constructor
του πεδίου πρωτοτύπου της κλάσης Developer
ώστε να δείχνει πάλι στην κλάση Developer
.