Heim >Web-Frontend >Front-End-Fragen und Antworten >Was ist der Unterschied zwischen der Vererbung in es5 und es6?

Was ist der Unterschied zwischen der Vererbung in es5 und es6?

WBOY
WBOYOriginal
2022-03-30 16:52:235367Durchsuche

Der Unterschied zwischen der Vererbung von es5 und es6 besteht darin, dass es5 zuerst die Unterklasse erstellt, die übergeordnete Klasse instanziiert und diese zur Unterklasse hinzufügt, um die Vererbung zu erreichen; während es6 zuerst die übergeordnete Klasse erstellt und durch Aufrufen der Super-Methode auf die übergeordnete Klasse zugreift In der instanziierten Teilmenge wird schließlich die Vererbung durch Modifizieren erreicht.

Was ist der Unterschied zwischen der Vererbung in es5 und es6?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, ECMAScript Version 6.0, Dell G3-Computer.

Was ist der Unterschied zwischen der ES5- und der ES6-Vererbung?

Die ES5-Vererbung erstellt im Wesentlichen zuerst ein Instanzobjekt der Unterklasse und fügt dann die Methode der übergeordneten Klasse hinzu (Parent.apply(this)).

ES6 Der Vererbungsmechanismus ist im Grunde völlig anders: Das Instanzobjekt this der übergeordneten Klasse wird zuerst erstellt (daher muss zuerst die super()-Methode der übergeordneten Klasse aufgerufen werden) und dann wird dieses mithilfe des Konstruktors der Unterklasse geändert.

ES5-Vererbung wird über den Prototyp- oder Konstruktormechanismus implementiert.

ES6 definiert Klassen über das Schlüsselwort „class“, das Konstruktoren enthält, und die Vererbung zwischen Klassen wird über das Schlüsselwort „extends“ erreicht. Unterklassen müssen die Super-Methode in der Konstruktormethode aufrufen, andernfalls wird beim Erstellen einer neuen Instanz ein Fehler gemeldet. Weil die Unterklasse kein eigenes This-Objekt hat, sondern das This-Objekt der übergeordneten Klasse erbt und es dann verarbeitet. Wenn die Supermethode nicht aufgerufen wird, kann die Unterklasse dieses Objekt nicht abrufen.

Vererbung in ES6

In traditionellem JS erfolgt das Generieren von Objekten durch Erstellen eines Konstruktors und anschließendes Definieren des generierten Objekts ist, Klasse. Objekte werden über das Schlüsselwort class definiert.

  Klasse ist ein Schlüsselwort, Sprachzucker, damit Sie das erstellte Objekt klarer verstehen können.

Verwenden Sie den Attributkonstruktor, um die von der Steuermethode übergebenen Parameter zu erhalten Parameter standardmäßig

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

Die Vererbung in ES6 basiert auf der Vererbung zwischen Klassen. Dies wird durch das Schlüsselwort „extends“ erreicht.

Aufrufen der übergeordneten Klasse durch Super-Instanziierung

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

Der obige Code ist ein einfacher Satz der ES6-Eltern-Kind-Klassenvererbung.

Ich glaube, Sie haben es gesehen, obwohl der offensichtliche Unterschied darin besteht, dass in ES6 die Supermethode die übergeordnete Komponente aktiviert, anstatt eine neue Instanziierung zu erstellen. Mit anderen Worten, das Instanzobjekt der übergeordneten Klasse wird zuerst erstellt und dann aufgerufen, um dies im Konstruktor der Unterklasse zu ändern, um das Prototypobjekt zu vervollständigen.

Zusammenfassung:

Der größte Unterschied zwischen der ES5- und ES6-Vererbung ist:   1. ES5 erstellt zuerst die Unterklasse, instanziiert die übergeordnete Klasse und fügt sie der Unterklasse hinzu

  2. ES6 erstellt zuerst die übergeordnete Klasse, Nach dem Zugriff auf das übergeordnete Element durch Aufrufen der Super-Methode in der instanziierten Teilmenge wird die Vererbung durch Modifizieren realisiert

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen der Vererbung in es5 und es6?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn