In JavaScript kann jede rechtliche Funktion als Objektkonstruktor verwendet werden, die sowohl integrierte Funktionen im System als auch vom Benutzer definierten Funktionen enthält. Sobald die Funktion als Konstruktor ausgeführt wird, bezieht sich diese Eigenschaft in der Funktion auf die Funktion selbst.
Im Allgemeinen geben Konstruktoren keine Werte zurück, sie initialisieren nur das von diesem Zeiger übergebene Objekt und geben nichts zurück. Wenn eine Funktion einen Rückgabewert hat, wird das zurückgegebene Objekt zum Wert des neuen Ausdrucks. Aus formaler Sicht, der einzige Unterschied zwischen einer Funktion, die als Konstruktor ausgeführt wird, oder einer gewöhnlichen Funktion, ob der neue Bediener verwendet werden soll.
Die obige Beschreibung hat tatsächlich eine genauere Bedeutung.
Wenn der Rückgabewert einer Funktion Daten eines Referenztyps (Array, Objekt oder Funktion) ist, wird das Ergebnis des Vorgangs durch den Rückgabewert ersetzt, wenn diese Funktion mit dem neuen Bediener als Konstruktor ausgeführt wird Dieses Mal ist der Konstruktorkörper im diesem Wert von verloren, wird durch das zurückgegebene Objekt ersetzt. Zum Beispiel:
Die Codekopie lautet wie folgt:
Funktionstest ()
{
this.a = 10;
Rückgabefunktion ()
{
Rückkehr 1;
}
}
Alarm M = neuer Test ();
var n = test ();
Alarm (m); // RECHT DIE SCHLAGE nach der Rückkehr zurück
ALERT (n); // RECHT DIE SCHLAGE nach der Rückkehr zurück
Der Wert des laufenden Ergebniss M und n sind gleich, beide sind Verschluss, die durch die Testfunktion zurückgegeben werden, und das von diesem und das Zuordnungsergebnis davon verwiesene Objekt. A = 10 werden alle verworfen.
Wenn der Rückgabewert einer Funktion ein Werttyp ist, wird der Rückgabewert, wenn die Funktion mithilfe des neuen Operators als Konstruktor die Konstruktion ausführt, verworfen. Das Ergebnis des neuen Ausdrucks ist immer noch das von diesem verwiesene Objekt.
Die Codekopie lautet wie folgt:
Funktionstest ()
{
this.a = 10;
Rückkehr 1;
}
Alarm M = neuer Test ();
var n = test ();
ALERT (M) // Return [Objekt] zurückgeben
ALERT (n) // Return 1.