class
super
super
в обʼєктах-літералахsuper
class
Починаючи з ES6 можна використовувати класи, наприклад:
class MyClass {
// Звичайне поле обʼєкта класу
// (може мати значення за замовчуванням, як в даному випадку, або не мати його)
myProperty = 'default value';
// Конструктор (автоматчно викликається щоразу при створенні обʼєкта класу)
constructor(value = null) {
if (value !== null) {
this.myProperty = value;
}
}
// Метод обʼєкта класу
myMethod() {
console.log(this.myProperty)
}
}
// Створюємо обʼєкти класу, передаємо значення в конструктор
let obj1 = new MyClass('some value');
let obj2 = new MyClass('another value');
obj1.myMethod(); // some value
obj2.myMethod(); // another value
super
Наслідування тепер виглядає саме як наслідування класів один від одного:
class MyParent {
constructor(value) {
this.myProperty = value;
}
myMethod() {
console.log(this.myProperty);
}
}
// MyChild наслідується від MyParent,
// всередині MyChild ключове слово `super` вказує на MyParent (супертип)
class MyChild extends MyParent {
// Тут за потреби перевизначаємо деякі методи і властивості, додаємо нові
constructor(value, anotherValue) {
// В конструкторі спочатку обовʼязково викликаємо батьківський конструктор
super(value);
this.anotherProperty = anotherValue;
}
myMethod() {
// В перевизначених методах за потреби можемо викликати батьківську реалізацію
super.myMethod();
console.log(this.anotherProperty);
}
}
let parentObj = new MyParent('some parent value');
let childObj = new MyChild('some child value', 'some another value');
parentObj.myMethod(); // some parent value
childObj.myMethod(); // some child value some another value