Verstehen von „new.target“ in ECMAScript 2015
In der ECMAScript 2015-Spezifikation wird das Schlüsselwort „new.target“ kurz vorgestellt dreimal erwähnt. Während MDN einen gewissen Kontext bereitstellt, bleibt dieser etwas vage.
Was ist „new.target“?
„new.target“ ist eine Metaeigenschaft, auch bekannt als Neues Ziel. Es ruft den aktuellen Wert des internen Slots [[NewTarget]] der Nicht-Pfeil-Funktionsumgebung ab. Dieser Wert wird festgelegt, wenn eine Funktion mit dem Schlüsselwort „new“ aufgerufen wird.
Zweck von „new.target“
Sein Hauptzweck ist bestimmen ob eine Funktion als Konstruktor aufgerufen wurde oder nicht. Darüber hinaus spielt es eine entscheidende Rolle bei der Implementierung von ES6-Klassen.
Wie ES6-Klassen „new.target“ nutzen
Wenn ein ES6-Klassenkonstruktor über „ aufgerufen wird neues X“, der „this“-Wert wird nicht initialisiert. Das Objekt ist noch nicht erstellt. Die Instanz sollte jedoch vom .prototype des ursprünglich aufgerufenen Konstruktors erben.
„new.target“ verfolgt den „äußersten“ Konstruktor, der den „new“-Aufruf während super()-Aufrufen erhalten hat. Die OrdinaryCreateFromConstructor-Prozedur verwendet „new.target“ anstelle des aktuell ausgeführten Konstruktors, um die korrekte Vererbung sicherzustellen.
Beispiel:
<code class="javascript">class Parent { constructor() { console.log(new.target); // Child! } } class Child extends Parent { constructor() { super(); console.log(this); } } new Child;</code>
In diesem Beispiel „new .target“ gibt „Child“ innerhalb des Parent-Konstruktors aus, was darauf hinweist, dass es mit dem Schlüsselwort „new“ aufgerufen wurde.
Das obige ist der detaillierte Inhalt vonWas ist „new.target' und wie funktioniert es in ES6-Klassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!