Class-based Inheritance in ES5
This lesson teaches us how class-based inheritance is implemented in the ES5 version by using constructor functions.
We'll cover the following...
Inheritance Using Constructor
Objects are inherited from the constructor function’s prototype object using the prototype chain. The same concept could also be used in the implementation of class-based inheritance, i.e., where one class inherits the properties (including methods) from another class.
There is no class
keyword in the ES5 version of JavaScript; hence we use constructor functions to implement a class. Now let’s learn how class-based inheritance can be implemented using constructor functions, i.e., how one constructor function can inherit from another.
Example
Below is an example that is implementing class-based inheritance using constructor functions:
//constructor function Shapefunction Shape(shapeName,shapeSides){this.name = shapeNamethis.sides = shapeSides}//defining the property "equalSides" on the prototype of ShapeShape.prototype.equalSides = 'yes'//displaying Shape.prototype//it will show "equalSides" that is defined on the prototypeconsole.log(Shape.prototype)//constructor function Rectanglefunction Rectangle(shapeName,shapeSides,length,width){//call function invoked to inherit and initialize the properites of Shape for RectangleShape.call(this,shapeName,shapeSides)//properties of rectanglethis.length = lengththis.width = width}//Setting Shape object to be the prototype of Rectangle//so Rectangle can inherit Shape prototype properties//through the new object createdRectangle.prototype = Object.create(Shape.prototype)//setting Rectangle's prototype constructor so that it points to itselfRectangle.prototype.constructor = Rectangle//defining a method "area" on the prototype of RectangleRectangle.prototype.getArea = function(){return this.length*this.width}//displaying Rectangle.prototype//it will show getArea that is defined on its prototype//and constructor function pointing to Rectangle itselfconsole.log(Rectangle.prototype)//creating a Rectangle object instancevar obj = new Rectangle('Rectangle',4,3,5)//displaying propertiesconsole.log("Name:",obj.name)console.log("Sides:",obj.sides)console.log("All sides are equal:",obj.equalSides)console.log("Length:",obj.length)console.log("Width",obj.width)console.log("Area:",obj.getArea())
call
Method
Before we get into the details of the code above, let’s discuss what a call
function does.
The purpose of call
is to invoke a method, defined anywhere, in the current context. Hence, this
is passed as its first parameter. In the code above, call
...