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
.