Wie wird NULL von einem Konstruktor zurückgegeben, der in Javascript mit new aufgerufen wird?

8

Ich versuche, den Konstruktor dazu zu bringen, die Objektkonstruktion abzubrechen, wenn etwas fehlschlägt, zum Beispiel kann es keine Leinwand bekommen.

Aber da ich new verwende, sehe ich, dass klass () immer this zurückgibt, unabhängig von einem Rückgabewert oder einem anderen Wert. Kann ich das umgehen, um null zurückzugeben?

Nun, wenn ich daran denke, könnte eine Lösung darin bestehen, die neue Instanz innerhalb von class () zu erstellen und diese Instanz oder null zurückzugeben, und nicht new , gibt es eine bessere Lösung?

%Vor%     
Petruza 23.12.2011, 17:04
quelle

5 Antworten

12

Sie können stattdessen eine "Factory-Funktion" oder eine "statische Factory-Methode" erstellen:

%Vor%

Gleiches gilt für die neuere Klassensyntax:

%Vor%     
Kos 23.12.2011, 17:11
quelle
10

Die bessere Lösung wäre, einen Fehler zu erzeugen:

%Vor%

EDIT: Konstruktoren können "gezwungen" werden, keine Instanz zurückzugeben:

%Vor%

Die seltsame Sache ist jedoch, dass, wenn ein "Konstruktor" eine Zahl, eine Zeichenfolge, true , false usw. zurückgibt, es tatsächlich eine Instanz zurückgibt. Die zweite Lösung funktioniert nur, wenn der Konstruktor ein leeres Array [] oder ein leeres Objekt {} zurückgibt.

    
Linus Kleen 23.12.2011 17:07
quelle
2

Sie können eine Factory mit dem Konstruktor in einer Funktion kombinieren, indem Sie die in John Resigs Artikel beschriebene Technik verwenden . Beispiel:

%Vor%     
georg 23.12.2011 17:32
quelle
0

Die Antwort ist leider, Sie können nicht: (. Die Gründe sind in dieser Antwort:

Welche Werte kann ein Konstruktor zurückgeben, um eine Rückkehr zu vermeiden das?

    
B T 25.07.2013 06:56
quelle
0

Wie ich in meinem Kommentar oben gepostet habe ...

%Vor%     
headacheCoder 13.08.2013 15:46
quelle

Tags und Links