super - это ключевое слово в JavaScript, которое используется в контексте классов и объектов, чтобы обратиться к родительскому классу или объекту и вызвать его методы или свойства.
В контексте классов, super используется для вызова конструктора родительского класса и доступа к его методам и свойствам. Например, если класс Child наследует от класса Parent, то в конструкторе класса Child можно использовать super() для вызова конструктора родительского класса и установки его свойств:
class Parent {
constructor(name) {
this.name = name
}
}
class Child extends Parent {
constructor(name, age) {
super(name) // вызываем конструктор родительского класса
this.age = age
}
}В этом примере super(name) вызывает конструктор родительского класса Parent и передает ему аргумент name.
Также super может использоваться в методах класса Child для вызова методов родительского класса:
class Parent {
sayHello() {
console.log("Hello from Parent")
}
}
class Child extends Parent {
sayHello() {
super.sayHello() // вызываем метод родительского класса
console.log("Hello from Child")
}
}В этом примере super.sayHello() вызывает метод sayHello() родительского класса Parent.
В контексте объектов, super используется в объектах, созданных с помощью функций-конструкторов, чтобы обратиться к родительскому объекту и вызвать его методы или свойства. Например:
function Parent(name) {
this.name = name
}
Parent.prototype.sayHello = function () {
console.log("Hello from Parent")
}
function Child(name, age) {
Parent.call(this, name) // вызываем конструктор родительского объекта
this.age = age
}
Child.prototype = Object.create(Parent.prototype)
Child.prototype.constructor = Child
Child.prototype.sayHello = function () {
Parent.prototype.sayHello.call(this) // вызываем метод родительского объекта
console.log("Hello from Child")
}В этом примере Parent.call(this, name) вызывает конструктор родительского объекта Parent и устанавливает его свойства, а Parent.prototype.sayHello.call(this) вызывает метод sayHello() родительского объекта Parent.