Heim > Web-Frontend > js-Tutorial > Können Konstruktoren andere Werte als „this' zurückgeben?

Können Konstruktoren andere Werte als „this' zurückgeben?

Linda Hamilton
Freigeben: 2024-11-14 13:01:02
Original
619 Leute haben es durchsucht

Can Constructors Return Values Other Than

Rückgabewerte für Konstruktoren, die die „this“-Referenz umgehen

Beim Aufrufen eines Konstruktors mit dem Schlüsselwort new gilt das Standardverhalten für Konstruktor, um das neu erstellte Objekt (als „this“ bezeichnet) zurückzugeben. Es gibt jedoch bestimmte Umstände, unter denen ein Konstruktor einen anderen Wert zurückgeben kann, wodurch die Zuweisung von „this“ zum neu erstellten Objekt effektiv verhindert wird.

Gemäß der ECMAScript-Spezifikation Schritt 8 des [[Construct]] Die interne Eigenschaft definiert das Rückgabeverhalten wie folgt:

Wenn der Typ des von der Konstruktorfunktion (Ergebnis(6)) zurückgegebenen Werts kein ist Objekt:

- The value returned by the constructor will be returned instead of "`this`".
Nach dem Login kopieren

Um daher einen anderen Wert als „dies“ von einem Konstruktor zurückzugeben:

  1. Ein Nicht-Objekt-Primitiv zurückgeben (z. B. eine Zeichenfolge, Zahl oder boolescher Wert): Wenn der zurückgegebene Wert ein Grundwert ist, wird er nicht als Objekt interpretiert und somit auch nicht das neue Objekt zurückgegeben.
  2. Gibt ein benutzerdefiniertes Objekt oder einen Nicht-Null-Wert mit einem anderen Typ als Object zurück: Dies kann mit der Methode Object.create() oder durch Zuweisen eines anderen Prototyps erreicht werden das erstellte Objekt.

Beispiel:

function Foo() {
    return { name: "sample" };
}

var foo = new Foo();
console.log(foo instanceof Foo); // false
Nach dem Login kopieren

In diesem Fall, da der Foo-Konstruktor ein Objekt zurückgibt, das nicht vorhanden ist Eine Instanz des Foo-Konstruktors (neue Foo()-Instanz von Foo) wird als falsch ausgewertet.

Das obige ist der detaillierte Inhalt vonKönnen Konstruktoren andere Werte als „this' zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage