Skip to main content

Κληρονομικότητα

Η κληρονομικότητα είναι η ικανότητα μιας κλάσης να κληρονομήσει ιδιότητες και μεθόδους από μια άλλη κλάση. Στην 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.