Beachten Sie, dass technisch jede Funktion als Konstruktor verwendet werden kann.
Aber um die als Konstruktor konzipierte Funktion hervorzuheben, werden sie mit einem Großbuchstaben bezeichnet: Tier statt Tier.
In der Regel der Konstruktor nicht anythingюTheir Mission zurückkehren - alles aufzuschreiben, was Sie brauchen, in diesem, die automatisch
Aber wenn ein expliziter Aufruf ist immer noch da zurück führen wird, dann gilt eine einfache Regel :
- Wenn der Aufruf an das Objekt zurückgegeben wird, wird es anstelle dieses zurückgegeben.
- Wenn Sie eine Rückkehr zu einem primitiven Wert aufrufen, wird dieser verworfen.
Zum Beispiel kann das Objekt zurück:
function BigAnimal() {
this.name = "Mouse";
return { name: "Godzilla " }; // <-- return the object
}
alert(new BigAnimal().name); // Godzilla, we got an object instead of this
Hier ein Beispiel für einen Zeilenumbruch ist:
function BigAnimal() {
this.name = "Mouse";
return "Godzilla"; // <-- return the primitive
}
alert(new BigAnimal().name); // Mouse, received this (but Godzilla is gone)
Dieses Merkmal der Arbeit in dem neuen Standard registriert ist, aber es wird sehr selten verwendet.
Es gibt keine "Gefahr". Die Sprachspezifikation besagt, dass ein Konstruktor sein implizites 'this 'zurückgibt, es sei denn, es gibt explizit ein Objekt zurück. Primitive Typen sind keine Objekte. Daher gibt ein Konstruktor sein implizites "this" zurück, wenn es einen primitiven Typ zurückgibt. –
Es ist keine Gefahr. Der Autor sagt nur eine Tatsache darüber, was passiert. Es ist nützlich, sich dessen bewusst zu sein. – ADyson
@ Frédéric Hamidi Wenn Sie eine Rückkehr zu einem primitiven Wert aufrufen, wird dieser verworfen. Siehe meine Antwort bitte. Ich zitiere ein Beispiel, in dem dieser Fall auftritt –