Heim  >  Artikel  >  Web-Frontend  >  Was ist die Verwendung von super in es6?

Was ist die Verwendung von super in es6?

WBOY
WBOYOriginal
2022-05-05 18:11:142325Durchsuche

Verwendung von super: 1. Wenn super als Funktion verwendet wird, wird es verwendet, um den Konstruktor der übergeordneten Klasse darzustellen. Die Syntax lautet „constructor(){super();}“ 2. Wenn super verwendet wird als ein Objekt, auf das in gewöhnlichen Methoden verwiesen wird. Das Prototypobjekt der übergeordneten Klasse wird in statischen Methoden dazu verwendet, auf die übergeordnete Klasse zu verweisen.

Was ist die Verwendung von super in es6?

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

Was ist die Verwendung von super in es6?

Der erste Fall: Wenn Super als Funktion verwendet wird, stellt es den Konstruktor der übergeordneten Klasse dar.

ES6 erfordert, dass der Konstruktor der Unterklasse die Superfunktion einmal ausführen muss

class A {}
class B extends A {
  constructor() {
    super();//子类的构造函数,必须执行一次super函数,代表父类的构造函数
  }
}

Hinweis: Obwohl super den Konstruktor der übergeordneten Klasse darstellt, wird zu diesem Zeitpunkt die Instanz von B zurückgegeben, das heißt, dieser innere Super bezieht sich auf die Instanz von B, sodass super () A.prototype entspricht .constructor.call(this)

class A {
  constructor() {
    console.log(new.target.name);
  }
}
class B extends A {
  constructor() {
    super();
  }
}
new A() // A
new B() // B

Im obigen Code zeigt new.target auf die aktuell ausgeführte Funktion. Wenn super() ausgeführt wird, zeigt es auf den Konstruktor der Unterklasse B, nicht auf den Konstruktor der übergeordneten Klasse A. In Mit anderen Worten, die Funktion in super() zeigt auf B

Wenn super als Funktion verwendet wird, muss es im Konstruktor der Unterklasse erscheinen, andernfalls wird ein Fehler gemeldet

class A {}
class B extends A {
  m() {
    super(); // 报错
  }
}

Zweiter Fall: Wenn super verwendet wird Als Objekt zeigt es in der gewöhnlichen Methode auf das Prototypobjekt der übergeordneten Klasse. In der statischen Methode zeigt es auf die übergeordnete Klasse

class A {
  p() {
    return 2;
  }
}
class B extends A {
  constructor() {
    super();//父类的构造函数
    console.log(super.p()); // 2
  }
}
let b = new B();

Wenn super im obigen Code als Funktion verwendet wird, stellt es das dar Konstruktormethode der übergeordneten Klasse. Wenn sie als Objekt verwendet wird, zeigt sie auf das Prototypobjekt der übergeordneten Klasse, nämlich A.prototype, sodass super.p( ) äquivalent zu A.prototype.p()

Sollte Beachten Sie hier auch, dass die Attribute oder Methoden der Instanz der übergeordneten Klasse nicht über super aufgerufen werden können, da super auf den Prototyp der übergeordneten Klasse verweist. Im obigen Code ist p Die Attribute der Instanz der übergeordneten Klasse A können nicht aufgerufen werden von super.p referenziert werden

Wenn das Attribut im Prototyp der übergeordneten Klasse definiert ist, können Sie mit super darauf zugreifen

class A {
  constructor() {
    this.p = 2;
  }
}
class B extends A {
  get m() {
    return super.p;
  }
}
let b = new B();
b.m // undefined

Im obigen Code ist das Attribut x im Prototyp des übergeordneten Klassenobjekts definiert, also Sie Kann man super gebrauchen.

Das obige ist der detaillierte Inhalt vonWas ist die Verwendung von super in 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
Vorheriger Artikel:Ist foreach in es6?Nächster Artikel:Ist foreach in es6?