Let’s use the classic example of the parent class “vehicle” and the subclasses “car” and “bike”. The vehicle’s constructor might have code to initialize the frame of the vehicle, count the wheels, and add brakes. The car’s constructor would add an engine and a horn, and call super() (the parent, vehicle’s constructor) to make sure it got a frame and counted the wheels, and have brakes. The bike constructor would add a bell, and pedals, but also call super() to get the frame and count the wheels, and add brakes. Answer from chrissilich on reddit.com
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Operators › super
super - JavaScript | MDN
The super keyword is used to access properties on an object literal or class's [[Prototype]], or invoke a superclass's constructor.
🌐
W3Schools
w3schools.com › jsref › jsref_class_super.asp
JavaScript Class super keyword
The super keyword is used to call the constructor of its parent class to access the parent's properties and methods. Tip: To understand the "inheritance" concept (parent and child classes) better, read our JavaScript Classes Tutorial.
🌐
Educative
educative.io › answers › what-is-the-super-keyword-in-javascript
What is the super keyword in JavaScript?
This is where super comes into play. The super keyword in JavaScript acts as a reference variable to the parent class.
🌐
GeeksforGeeks
geeksforgeeks.org › javascript › javascript-super-keyword
JavaScript Super Keyword - GeeksforGeeks
June 19, 2024 - The super keyword is used to call the parent class's constructor to access its properties and methods. ... This keyword can accepts all the arguments that has been used to create a constructor.
🌐
TutorialsPoint
tutorialspoint.com › super-keyword-in-javascript
Super keyword in JavaScript?
<!DOCTYPE html> <html> <head> <meta charset ="UTF-8"> <meta http-equiv ="X-UA-Compatible" content ="IE=edge"> <meta name ="viewport" content ="width=device-width, initial-scale =1.0"> <title>Super keyword in Javascript</title> </head> <body> <p id="super" style="text-align : center"></p> <script> class Person{ constructor(person_name) { this.name = person_name; } getPersonName() { return this.name; } } class Aadhar extends Person { constructor(person_name,AadharID){ super(person_name); this.AadharID = AadharID; } showAadharId() { return 'The Aadhar ID for the person '+ this.getPersonName() +' is : '+this.AadharID; } } var person_id = new Aadhar('Rajesh','5000 0000 0000 0000'); document.write(person_id.showAadharId()); </script> </body> </html>
🌐
Reddit
reddit.com › r/javascript › what does `super()` actually do?
r/javascript on Reddit: What does `super()` actually do?
March 18, 2018 -

I've used it plenty of times, and I've read that it calls the constructor function of its parent class, but I'm not really grasping the concept of it to be honest. I know it's not a concept unique to JS, so if anyone has any good links/examples to explain it in other languages, that would also be great. I thought I understood it, but as I'm trying to learn more about OOP i seem to get more confused by the day lol.

Thanks

🌐
CSS-Tricks
css-tricks.com › what-is-super-in-javascript
What is super() in JavaScript? | CSS-Tricks
November 6, 2019 - That means trout’s this context includes the properties and methods defined in the fish class, plus whatever properties and methods trout defines for itself. Calling super() essentially lets JavaScript know what a fish is so that it can create a this context for trout that includes everything from fish, plus everything we’re about to define for trout.
🌐
CodeSweetly
codesweetly.com › super-keyword-in-javascript
super Keyword in JavaScript – What Is the super Keyword? | CodeSweetly
The super keyword searches a parent class or object literal for a specified static or prototypal property. ... The super() function call in the snippet above tells the computer to find a constructor in the parent class’s prototype chain.
🌐
Medium
frontendinterviewquestions.medium.com › super-keyword-in-javascript-10f9b144999e
Super keyword in JavaScript. For more questions and answers visit… | by Pravin M | Medium
September 12, 2024 - The super keyword in JavaScript is a crucial feature in object-oriented programming, particularly when dealing with inheritance. It provides a way to call functions or access properties from a parent class within a subclass.
Find elsewhere
🌐
freeCodeCamp
freecodecamp.org › news › javascript-class-handbook
The JavaScript Class Handbook – Complete Guide to Class Fields and the Super Keyword
May 20, 2024 - We used the super keyword in the snippet above to access the parent class’s static class field. Note: super cannot access a parent class’s instance class field because JavaScript sets an instance property on the object instance, not the class itself or its prototype chain.
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Errors › Bad_super_call
SyntaxError: super() is only valid in derived class constructors - JavaScript | MDN
The JavaScript exception "super() is only valid in derived class constructors" occurs when the super() call is used somewhere that's not the body of a constructor in a class with extends keyword.
🌐
YouTube
youtube.com › bro code
The JavaScript SUPER keyword is super! 🦸‍♂️ - YouTube
00:00:00 intro00:00:22 setup00:02:39 super constructor00:05:59 super methods00:09:03 conclusion// super = keyword is used in classes to call the constructor ...
Published   November 19, 2023
Views   14K
🌐
Yousaf Khan
yousaf.hashnode.dev › super-in-javascript-an-in-depth-guide
"super" in Javascript
December 4, 2021 - When super() is called inside the constructor of a sub-class, super keyword uses the prototype of the sub-class' constructor to access the super-class constructor and calls it.
🌐
Flavio Copes
flaviocopes.com › javascript-super
The JavaScript super keyword
June 25, 2020 - will now execute 2 console logs. First the one defined in the Car class constructor, the second the one defined in the Tesla class constructor: ... Note that super() can only be called in the constructor, not in other methods.
Top answer
1 of 2
7

If you use this, the engine will first try to access the property on the instance itself. If it doesn't exist on the instance, it'll then go to the prototype (Footballer.prototype). If it doesn't exist there, it'll then go to Human.prototype to see if the property exists.

If you use super, it'll immediately go to the parent class, Human.prototype, to see if the property exists, and will go upward from there (rather than go through the instance and child prototype first).

This will be especially important to keep in mind if a method with the same name exists both on the parent and child, which isn't uncommon.

class Human {
  mouse () {
    console.log('parent class');
  }
}

class Footballer extends Human {
  mouse() {
    console.log('child class');
  }
  talk () {
    super.mouse();
    this.mouse();
  }
}

const f = new Footballer();
f.talk();
2 of 2
0

There is a big difference. In languages like Java and Javascript, with super you are accessing the parent's properties and methods.

With this you are accessing the child's properties and methods.

this.mouse() works because first the mouse property is accessed for the child (Footballer) and when not found the property is looked for in the parent (Human). This is how inheritance works. When accessing a property called x, Javascript will try to move upwards in the prototype chain until it finds a property named x.

If you define a property like kick only in Footballer, then super.kick() will not work but this.kick() will, demonstrating the difference.

class Human {
  constructor (name, age) {
    this.name = name;
    this.age = age;
  }
  mouse (sentense) {
    console.log(`${this.name}: "${sentense}".`);
  }
}

class Footballer extends Human {
  constructor(name, age, position, team) {
    super(name, age);
    this.team = team;
    this.position = position;
  }
  kick(){
  console.log("kicked");
  }
  play(){
    this.kick();
    super.kick();
  }
  talk (sentense) {
    super.mouse(sentense); // This works.
    this.mouse(sentense); // This also works.
  }
}

const messi = new Footballer();
messi.play();
🌐
Medium
medium.com › technology-software › what-is-super-keyword-in-javascript-javascript-interview-questions-16-127a19de824b
What is super keyword in Javascript: Javascript Interview Questions #16 | by Melih Yumak | TechnologySoftware | Medium
February 16, 2023 - Class inheritance enables us to use the parent class functionalities. But how can we change these values and functions while we are creating a new inherited class? Super keyword is used for changing the parent classes defined methods and properties.
🌐
JavaScript in Plain English
javascript.plainenglish.io › what-is-the-role-of-super-in-es6-class-fa06fc146d30
What is the Role of Super in ES6 Class | by Stephanie Zhan | JavaScript in Plain English
April 5, 2023 - ES6 classes are a syntactical sugar ... features of ES6 classes is the super keyword, which is used to call the parent constructor and access parent properties and methods....