Ответ
Ключевое слово super используется в классах JavaScript для вызова методов родительского класса. Оно особенно полезно при наследовании, когда нужно обратиться к родительскому конструктору или методам.
Пример:
class Parent {
constructor(name) {
this.name = name;
}
greet() {
return `Hello, ${this.name}`;
}
}
class Child extends Parent {
constructor(name, age) {
super(name); // Вызов конструктора Parent
this.age = age;
}
greet() {
return `${super.greet()}! You are ${this.age} years old.`;
}
}
const child = new Child('Alice', 25);
console.log(child.greet()); // "Hello, Alice! You are 25 years old."
Важные моменты:
- В конструкторе
super()должен вызываться до использованияthis - В методах
super.method()позволяет вызывать методы родителя - Работает только в классах с
extends
Ответ 18+ 🔞
А, ну вот, опять про этот ваш super, блядь. Слушай, как будто без него вообще нихуя не работает, да? Ну ладно, разберём, раз уж такие умные.
Представь, есть у тебя класс Parent, ну, типа родитель, старый пердун. У него есть конструктор, который принимает name и запихивает его в this.name. И метод greet, который тупо здоровается. Всё просто, пиздец.
class Parent {
constructor(name) {
this.name = name;
}
greet() {
return `Hello, ${this.name}`;
}
}
А теперь появляется его отпрыск, класс Child, который extends Parent. То есть он, типа, наследник, всё от папочки получил, но ещё и своё говно притащил — в данном случае age.
class Child extends Parent {
constructor(name, age) {
super(name); // Вызов конструктора Parent
this.age = age;
}
greet() {
return `${super.greet()}! You are ${this.age} years old.`;
}
}
И вот тут-то, сука, и появляется наш герой — super. В конструкторе Child мы сначала кричим: «Папааа! (super(name)) Иди сюда, инициализируй своё старое говно, имя там своё установи!». И только ПОСЛЕ этого, блядь, мы имеем право говорить про this.age. А то будет ошибка, типа «ой, а this кто такой?». Правильно, ебать, потому что this создаётся в родительском конструкторе, ты чё, не знал?
А в методе greet ребёнка мы тоже используем super.greet(). Это типа: «Пап, ты там сначала поздоровайся по-своему, старомодно, а я уж потом своё молодёжное, ебаное age прилеплю». И получается красиво: «Hello, Alice! You are 25 years old.».
И главное, запомни, ёпта:
- В конструкторе —
super()вызывай ПЕРВЫМ ДЕЛОМ, а то получишь пизды от интерпретатора. - В методах —
super.method()это крик в прошлое, типа «папа, сделай тут базовую часть, а я уж сверху наворочу». - И работает эта магия ТОЛЬКО если ты написал
extends. Без этого — нихуя, просто словоsuperболтается в воздухе, как хуй без штанов.
Вот и вся философия, блядь. Не такой уж он и сложный, этот super, когда разберёшься. Просто не будь мудаком, вызывай родителя вовремя.