Heim > Web-Frontend > js-Tutorial > Hauptteil

Kann ein JavaScript-Konstruktor andere Werte als das konstruierte Objekt zurückgeben?

DDD
Freigeben: 2024-11-10 21:43:02
Original
549 Leute haben es durchsucht

Can a JavaScript Constructor Return Values Other Than the Constructed Object?

Konstruktor-Rückgabewerte und der [Instanceof]-Operator

In JavaScript kann eine Konstruktorfunktion andere Werte als das konstruierte Objekt zurückgeben. Das Verständnis dieser Umstände ist entscheidend, um Laufzeitfehler wie unerwartete Ergebnisse des Instanzoperators zu vermeiden.

Die ECMAScript 3rd Edition-Spezifikation definiert die Eigenschaft [[Construct]], die das Konstruktorverhalten regelt. Gemäß der Spezifikation:

  • Schritt 7: Wenn der Rückgabewert der Konstruktorfunktion (Ergebnis(6)) kein Objekttyp ist, geben Sie Ergebnis(6) zurück.
  • Schritt 8: Andernfalls geben Sie das neu konstruierte Objekt zurück (Ergebnis(1)).

Daher kann ein Konstruktor nicht-primitive Werte (wie Funktionen) zurückgeben oder Arrays), um zu verhindern, dass der Instanzoperator true zurückgibt.

Zum Beispiel:

function Foo() {
  return [];
}

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

Da der Konstruktor ein Array (kein Objekt) zurückgibt, schlägt die Instanzprüfung fehl. Umgekehrt würde die Rückgabe eines primitiven Werts (wie null oder undefiniert) immer noch true zurückgeben.

Zusammenfassend können die von einem Konstruktor zurückgegebenen Werte das Instanzergebnis beeinflussen. Durch das Verständnis der in der Eigenschaft [[Construct]] dargelegten Bedingungen können Entwickler unerwartetes Verhalten verhindern und eine genaue Überprüfung der Klassenvererbung sicherstellen.

Das obige ist der detaillierte Inhalt vonKann ein JavaScript-Konstruktor andere Werte als das konstruierte Objekt 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage