I den här handledningen lär du dig om JavaScript-arv med hjälp av exempel.
Klassarv
Med arv kan du definiera en klass som tar all funktionalitet från en överordnad klass och låter dig lägga till mer.
Med hjälp av klassärv kan en klass ärva alla metoder och egenskaper för en annan klass.
Arv är en användbar funktion som möjliggör återanvändbar kod.
För att använda klassärv använder du extends
nyckelordet. Till exempel,
// parent class class Person ( constructor(name) ( this.name = name; ) greet() ( console.log(`Hello $(this.name)`); ) ) // inheriting parent class class Student extends Person ( ) let student1 = new Student('Jack'); student1.greet();
Produktion
Hej Jack
I exemplet ovan Student
ärver klassen alla klassens metoder och egenskaper Person
. Därför kommer Student
klassen nu att ha name
egenskapen och greet()
metoden.
Sedan öppnade vi greet()
metoden för Student
klass genom att skapa ett student1
objekt.
JavaScript super () nyckelord
Det super
nyckelord som används inuti ett barn klass betecknar dess moderklass. Till exempel,
// parent class class Person ( constructor(name) ( this.name = name; ) greet() ( console.log(`Hello $(this.name)`); ) ) // inheriting parent class class Student extends Person ( constructor(name) ( console.log("Creating student class"); // call the super class constructor and pass in the name parameter super(name); ) ) let student1 = new Student('Jack'); student1.greet();
Här refererar super
inuti Student
klassen till Person
klassen. Följaktligen, när konstruktören av Student
klassen kallas, kallar den också konstruktören för Person
klassen som tilldelar en namnegenskap till den.
Åsidosättande metod eller egendom
Om en underordnad klass har samma metod eller egendomsnamn som för föräldraklassen använder den underordnade klassens metod och egendom. Detta koncept kallas metodöverstyrning. Till exempel,
// parent class class Person ( constructor(name) ( this.name = name; this.occupation = "unemployed"; ) greet() ( console.log(`Hello $(this.name).`); ) ) // inheriting parent class class Student extends Person ( constructor(name) ( // call the super class constructor and pass in the name parameter super(name); // Overriding an occupation property this.occupation = 'Student'; ) // overriding Person's method greet() ( console.log(`Hello student $(this.name).`); console.log('occupation: ' + this.occupation); ) ) let p = new Student('Jack'); p.greet();
Produktion
Hej student Jack. yrke: Student
Här finns occupation
egenskapen och greet()
metoden i föräldraklassen Person
och Student
underklassen. Därför Student
åsidosätter klassen occupation
egenskapen och greet()
metoden.
Användning av arv
- Eftersom en barnklass kan ärva alla funktionerna i föräldraklassen, möjliggör kodåteranvändning.
- När en funktion har utvecklats kan du helt enkelt ärva den. Inget behov av att uppfinna hjulet på nytt. Detta möjliggör renare kod och lättare att underhålla.
- Eftersom du också kan lägga till dina egna funktioner i barnklassen kan du bara ärva de användbara funktionerna och definiera andra nödvändiga funktioner.