Heim >Web-Frontend >js-Tutorial >Wann kann ein JavaScript-Konstruktor etwas anderes als „this' zurückgeben?

Wann kann ein JavaScript-Konstruktor etwas anderes als „this' zurückgeben?

DDD
DDDOriginal
2024-11-11 07:11:02621Durchsuche

When Can a JavaScript Constructor Return Something Other Than 'this'?

Instanzen, in denen Konstruktoren andere Werte als „this“ zurückgeben

Wenn in JavaScript ein Konstruktor mit dem Schlüsselwort new aufgerufen wird, gibt er im Allgemeinen einen Rückgabewert zurück das neu erstellte Objekt. Unter bestimmten Umständen kann jedoch ein anderer Wert zurückgegeben werden, um die Rückgabe dieses Werts zu vermeiden.

Bedingungen für die Rückgabe anderer Werte

Wie in den ECMA-262-Spezifikationen der 3. Ausgabe beschrieben [[Construct]] interne Eigenschaft (Schritt 7), der Rückgabewert eines Konstruktors (Result(6)) bestimmt, ob dieser zurückgegeben wird oder nicht. Wenn Result(6) kein ein Objekttyp ist, wird es stattdessen zurückgegeben. Diese Bedingung ist entscheidend für die korrekte Ausführung des Konstruktors.

Beispiel

Betrachten Sie den folgenden Konstruktor:

function Foo() {
  return 10; // Returning a non-object primitive
}

var foo = new Foo();

In diesem Beispiel, da 10 ist ein Nicht-Objekt-Grundelement und wird als Ergebnis des Foo()-Konstruktors zurückgegeben. Somit wird foo der primitive Wert 10 zugewiesen und (neue Foo()-Instanz von Foo) wird als falsch ausgewertet, da foo ein primitiver Typ ist.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass ein Konstruktor nur dann andere Werte als diesen zurückgeben kann, wenn der Rückgabewert des Konstruktors (Ergebnis(6)) kein ein Objekttyp ist. Diese Bedingung ermöglicht die Konstruktion von Objekten mit Nicht-Objektwerten oder die Übergabe der Kontrolle an andere Konstruktoren.

Das obige ist der detaillierte Inhalt vonWann kann ein JavaScript-Konstruktor etwas anderes als „this' zurückgeben?. 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