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.


Назад