Grund: Der abgeleitete Konstruktor erstellt kein neues This-Objekt, das heißt, die Unterklasse verfügt erst über ein eigenes This-Objekt, nachdem dieses von der Basisklasse (übergeordnete Klasse) über super() erstellt wurde Wie die Basisklasse verwenden auch Klassen dies, um Objekteigenschaften zu generieren.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, ECMAScript Version 6, Dell G3-Computer.
Ein wichtiger Punkt wird oft erwähnt, wenn man die ES6-Klassenvererbung lernt.
Es gibt zwei Anforderungen, wenn eine Unterklasse SubClass den Konstruktor der übergeordneten Klasse SuperClass erbt:
1) Super() muss im Konstruktor aufgerufen werden.
2) Dies muss nach super() geschrieben werden.
"Die Unterklasse hat keinen eigenen dies
"this
”这一概念
子类和父类是个相对的概念,因为一个类可以既是子类也是父类,所以ES6里用的是绝对的概念:基类和派生类。而且这个概念是针对所有构造函数说的,JS 里的构造函数要么是基的,要么就是派生的。
ES6中,我们随手写的构造函数(function)都是基类,基类可以直接用this来指向调用它所在方法的对象。
咱自己给this总结了一句话:谁调用了this,this就指向谁。
function Super(name) { this.name = name; SuperFactory.prototype.sayHi = function () { console.log("Hi"); } } let super = new Super("peter");//通过new创建了新的对象,Super()中的this即指向这个对象
ES6中的派生类,就是extend的class。派生出的构造函数不会创造新的<span style="background-color:#ffd900;">this</span>
对象<span style="background-color:#ffd900;">(或者说this指向的对象</span>
(这里可以回顾一下new关键字做的事情)
,就是所说的"子类没有自己的this"。只有通过<span style="background-color:#ffd900;">super()</span>
Die Unterklasse und die übergeordnete Klasse sind relative Konzepte, da eine Klasse sowohl eine Unterklasse als auch eine übergeordnete Klasse sein kann. Daher verwendet ES6 absolute Konzepte: Basisklasse und abgeleitete Klasse. Und dieses Konzept gilt für alle Konstruktoren in JS sind entweder einfach oder abgeleitet.
class SuperClass { //基类 not父类 constructor(name) { this.name = name; } sayHi() { console.log("Hi"); } }; class SubClass extends SuperClass {//派生类 not子类 constructor(name,age) { surpe(name); this.age = age; } sayNo() { console.log("NO"); } }; let subinst = new subClass('tom',18); subinst.sayHi();//Hi subinst.sayNo();//NO
Der abgeleitete Konstruktor erstellt kein neues
<p>this</p>
object<span style="background-color:#ffd900;"> (oder das Objekt, auf das this zeigt</span>< / code></strong>(Hier können Sie überprüfen, was das neue Schlüsselwort<span style="color:#0d0016;"><code>)
Nur durch Übergeben des von der Basisklasse erstellten Objekts durch </a>super()<a href="https://www.php.cn/course.html" target="_blank" textvalue="编程视频">
kann die abgeleitete Klasse dies verwenden, um die Eigenschaften des Objekts wie die Basisklasse
class Person { constructor(name) { this.name = name; } } class PolitePerson extends Person { constructor(name) { this.greetColleagues(); // 这里不允许我们使用this,下面解释 super(name); } greetColleagues() { alert('Good morning folks!'); } }
greetColleagues() { alert('Good morning folks!'); alert('My name is ' + this.name + ', nice to meet you!'); }
Das obige ist der detaillierte Inhalt vonWarum ruft die Klassenvererbung von es6 super auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!