What is the difference between inheritance in es5 and es6

WBOY
Release: 2022-03-30 16:52:23
Original
5329 people have browsed it

The difference between es5 and es6 inheritance is: es5 first creates a subclass, instantiates the parent class and adds it to the subclass this to achieve inheritance; while es6 creates the parent class first, and instantiates the subclass by calling super After the method accesses the parent class, it implements inheritance by modifying this.

What is the difference between inheritance in es5 and es6

The operating environment of this tutorial: Windows 10 system, ECMAScript version 6.0, Dell G3 computer.

What is the difference between inheritance in es5 and es6

Inheritance in ES5 essentially creates an instance object of the subclass first, and then adds the method of the parent class to this (Parent.apply( this)).

The inheritance mechanism of ES6 is completely different. In essence, the instance object this of the parent class is created first (so the super() method of the parent class must be called first), and then the constructor of the subclass is used. Modify this.

ES5 inheritance is implemented through the prototype or constructor mechanism.

ES6 defines a class through the class keyword, which has a constructor method, and inheritance between classes is achieved through the extends keyword. Subclasses must call the super method in the constructor method, otherwise an error will be reported when creating a new instance. Because the subclass does not have its own this object, but inherits the this object of the parent class and then processes it. If the super method is not called, the subclass cannot get the this object.

Inheritance in ES6

In traditional JS, the object is generated by creating a constructor, and then defining the generated object

function parent(a,b){
    this.a = a;
    this.b = b;
}
Copy after login

and then adding it through prototype Corresponding to the required method or attribute

parent.prototype.methods = function(){
    return 'this is test methods';
}
parent.prototype.attr = 'this is test attr‘;
Copy after login

And ES6 introduced the concept of class, that is, class. Objects are defined through the keyword class.

Class is a keyword, language sugar, so that you can understand the created object more clearly.

Use the attribute constructor to receive the parameters passed in by the control method. If you do not write this attribute, The default is no parameters

class parent{
    curstructor(a,b){
        this.a = a;
        this.b = b;
    }
}
Copy after login

Inheritance in ES6 is based on inheritance between classes. This is achieved through the keyword extends.

Calling the parent class through super instantiation

class parent{
  constructor(a,b){
    this.a = a;
    this.b = b;
  }
  parentMethods(){
    return this.a + this.b
  }
}
class child extends parent{
  constructor(a,b,c){
    super(a,b);
    this.c = c;
  }
  childMethods(){
    return this.c + ',' + super.parentMethods()
  }
}
const point = new child(1,2,3);
alert(point.childMethods());
Copy after login

The above code is a simple set of ES6 parent-child class inheritance.

I believe you have seen it, although the obvious difference is that in ES6, it is the super method that activates the parent component, rather than creating a new instantiation. In other words, the instance object of the parent class is created first. After the call, modify this in the constructor of the subclass to complete the prototype object.

Summary:

The biggest difference between ES5 and ES6 inheritance is:

1. ES5 first creates the subclass, and then instantiates the parent class and Add to subclass this

2.ES6 first creates the parent class, and after accessing the parent by calling the super method in the instantiated subset, realizes inheritance by modifying this

[Related recommendations: javascript video tutorialweb front-end

The above is the detailed content of What is the difference between inheritance in es5 and es6. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!