extends - наслідування класу.
class nameClass extends nameExtends{
...
}
class - ключове слово class яке оголошує клас.
nameClass - назва оголошеного класу.
nameExtends - назва класу, об'єкта яке буде наслідуване.
extends вказує на батькіаський клас, об'єкт від якого буде наслідувано властивості, методи.
Батьківський клас повинен бути оголошений першим. Інакше виникне помилка: "ReferenceError: Cannot access 'A' before initialization".
При наслідувані класу у JavaScript дозволено викортстовувати назву методів яка уже є в батьківському класі (однакові імена методів). При цьому щоб викликати батьківський метод необхідно звернутися через super.назва_метода.
extends входить у специфікацію ES2015.
class A{
constructor(text){
this.text=text;
}
}
class B extends A{
toText(){
return this.text;
}
}
var ob=new B("test");
alert( ob.toText() );
class Arr extends Array{
toText(){
return '['+this+']';
}
}
var mas=new Arr(12,56);
alert( mas.toText() );
class myArray extends Array{
toJSON(){
return JSON.stringify( Array.from(this) );
}
}
var mas = new myArray(1, 2, 3, "чотири", [2,2]);
alert( mas.toJSON() );
//базовий клас Людина
class Person{
constructor(name, age, masa, weight){
this.name=name;
this.age=age;
this.masa=masa;
this.weight=weight;
}
toString(){
return this.name;
}
getIMT(){
return this.masa/Math.pow(this.weight,2);
}
}
//клас Чоловік який наслідується з класу Людина
class Man extends Person{
constructor(name, age, masa, weight){
super(name, age, masa, weight);
this.work='';
this.marital_status='';
}
toString(){
return 'Man: '+this.name;
}
}
//клас Жінка який наслідується з класу Людина
class Woman extends Person{
constructor(name, age, masa, weight){
super(name, age, masa, weight);
this.work='';
this.marital_status='';
}
toString(){
return 'Woman: '+this.name;
}
}
//клас Дитина який наслідується з класу Людина
class Child extends Person{
constructor(name, age, masa, weight){
super(name, age, masa, weight);
this.school='';
}
toString(){
return 'Child: '+this.name;
}
}
var m=new Man('Oleh', 22, 52, 172);
var w=new Woman('Oksana', 22, 48, 170);
var c=new Child('Olja', 11, 32, 132);
c.school='ЗСШ 45';
alert( c );