What are the differences between ES2015 class and ES5 function constructors?
Importance
Mid
Quiz Topics
JAVASCRIPT
Let's first look at example of each:
// ES5 Function Constructorfunction Person(name) {this.name = name;}// ES2015 Classclass Person {constructor(name) {this.name = name;}}
For simple constructors, they look pretty similar.
The main difference in the constructor comes when using inheritance. If we want to create a Student
class that subclasses Person
and add a studentId
field, this is what we have to do in addition to the above.
// ES5 Function Constructorfunction Student(name, studentId) {// Call constructor of superclass to initialize superclass-derived members.Person.call(this, name);// Initialize subclass's own members.this.studentId = studentId;}Student.prototype = Object.create(Person.prototype);Student.prototype.constructor = Student;// ES2015 Classclass Student extends Person {constructor(name, studentId) {super(name);this.studentId = studentId;}}
It's much more verbose to use inheritance in ES5 and the ES2015 version is easier to understand and remember.